在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ 14.1 單片機(jī) I2C 時(shí)序介紹
18. RS485 通信與 Modbus 協(xié)議
17.5 A/D 差分輸入信號(hào)
15.8 C 語(yǔ)言復(fù)合數(shù)據(jù)類型(結(jié)構(gòu)體,共用體,枚舉類型)
16.3 NEC 協(xié)議紅外遙控器
13.1 單片機(jī)通信時(shí)序解析
14.4 單片機(jī) EEPROM 單字節(jié)讀寫操作時(shí)序
13.3 多個(gè) .c 文件的初步認(rèn)識(shí)
18.2 Modbus 通信協(xié)議介紹
15.1 BCD 碼介紹
18.3 單片機(jī) Modbus 多機(jī)通信程序設(shè)計(jì)
18.1 單片機(jī) RS485 通信接口、控制線、原理圖及程序?qū)嵗?/span>
15. 實(shí)時(shí)時(shí)鐘 DS1302
14.7 單片機(jī) I2C 和 EEPROM 的綜合編程
17. 模數(shù)轉(zhuǎn)換與數(shù)模轉(zhuǎn)換
16.2 紅外遙控通信原理
13.2 1602 液晶整屏移動(dòng)程序
17.6 D/A 輸出
17.7 單片機(jī)信號(hào)發(fā)生器程序
16.4 溫度傳感器 DS18B20
14.6 單片機(jī)EEPROM的頁(yè)寫入
13.4 單片機(jī)計(jì)算器程序設(shè)計(jì)[詳細(xì)]
17.2 A/D(模數(shù)轉(zhuǎn)換)的主要指標(biāo)
17.4 PCF8591 應(yīng)用程序
17.1 A/D 和 D/A 的基本概念
17.3 PCF8591硬件接口(電路圖引腳圖)
14.3 單片機(jī) EEPROM 簡(jiǎn)介
13.5 單片機(jī)串口通信原理和控制程序
15.5 DS1302 寄存器介紹
15.2 單片機(jī) SPI 通信接口
15.6 DS1302 通信時(shí)序介紹
14.5 單片機(jī) EEPROM 多字節(jié)讀寫操作時(shí)序
16. 紅外通信與 DS18B20 溫度傳感器
14.1 單片機(jī) I2C 時(shí)序介紹
15.3 實(shí)時(shí)時(shí)鐘芯片 DS1302 介紹
15.9 單片機(jī)電子時(shí)鐘程序設(shè)計(jì)
16.1 紅外光的基本原理
15.4 DS1302 的硬件信息
15.7 DS1302 的 BURST 模式
14.2 單片機(jī) I2C 尋址模式
14. 單片機(jī) I2C 總線與 EEPROM
13. 單片機(jī) 1602 液晶與串口的應(yīng)用實(shí)例

14.1 單片機(jī) I2C 時(shí)序介紹

在硬件上,I2C 總線是由時(shí)鐘總線 SCL 和數(shù)據(jù)總線 SDA 兩條線構(gòu)成,連接到總線上的所有器件的 SCL 都連到一起,所有 SDA 都連到一起。I2C 總線是開漏引腳并聯(lián)的結(jié)構(gòu),因此我們外部要添加上拉電阻。對(duì)于開漏電路外部加上拉電阻,就組成了線“與”的關(guān)系??偩€上線“與”的關(guān)系就是說(shuō),所有接入的器件保持高電平,這條線才是高電平,而任何一個(gè)器件輸出一個(gè)低電平,那這條線就會(huì)保持低電平,因此可以做到任何一個(gè)器件都可以拉低電平,也就是任何一個(gè)器件都可以作為主機(jī),如圖14-1所示,我們添加了 R63 和 R64 兩個(gè)上拉電阻。

http://wiki.jikexueyuan.com/project/mcu-tutorial-three/images/4.png" alt="" />

圖14-1 I2C 總線的上拉電阻

雖然說(shuō)任何一個(gè)設(shè)備都可以作為主機(jī),但絕大多數(shù)情況下我們都是用單片機(jī)來(lái)做主機(jī),而總線上掛的多個(gè)器件,每一個(gè)都像電話機(jī)一樣有自己唯一的地址,在信息傳輸?shù)倪^(guò)程中,通過(guò)這唯一的地址就可以正常識(shí)別到屬于自己的信息,在 KST-51 開發(fā)板上,就掛接了2個(gè) I2C 設(shè)備,一個(gè)是 24C02,一個(gè)是 PCF8591。

我們?cè)趯W(xué)習(xí) UART 串行通信的時(shí)候,知道了通信流程分為起始位、數(shù)據(jù)位、停止位這三部分,同理在 I2C 中也有起始信號(hào)、數(shù)據(jù)傳輸和停止信號(hào),如圖14-2所示。

http://wiki.jikexueyuan.com/project/mcu-tutorial-three/images/5.png" alt="" />

圖14-2 I2C 時(shí)序流程圖

從圖上可以看出來(lái),I2C 和 UART 時(shí)序流程有相似性,也有一定的區(qū)別。UART 每個(gè)字節(jié)中,都有一個(gè)起始位、8個(gè)數(shù)據(jù)位、1位停止位。而 I2C 分為起始信號(hào)、數(shù)據(jù)傳輸部分、停止信號(hào)。其中數(shù)據(jù)傳輸部分,可以一次通信過(guò)程傳輸很多個(gè)字節(jié),字節(jié)數(shù)是不受限制的,而每個(gè)字節(jié)的數(shù)據(jù)最后也跟了一位,這一位叫做應(yīng)答位,通常用 ACK 表示,有點(diǎn)類似于 UART 的停止位。

下面我們一部分一部分的把 I2C 通信時(shí)序進(jìn)行剖析。之前我們已經(jīng)學(xué)過(guò)了 UART,所以學(xué)習(xí) I2C 的過(guò)程我盡量拿 UART 來(lái)作為對(duì)比,這樣有助于更好的理解。但是有一點(diǎn)大家要理解清楚,就是 UART 通信雖然用了 TXD 和 RXD 兩根線,但是實(shí)際一次通信中,1條線就可以完成,2條線是把發(fā)送和接收分開而已,而 I2C 每次通信,不管是發(fā)送還是接收,必須2條線都參與工作才能完成,為了更方便的看出來(lái)每一位的傳輸流程,我們把圖14-2改進(jìn)成圖14-3。

http://wiki.jikexueyuan.com/project/mcu-tutorial-three/images/6.png" alt="" />

圖14-3 I2C 通信流程解析

起始信號(hào):UART 通信是從一直持續(xù)的高電平出現(xiàn)一個(gè)低電平標(biāo)志起始位;而 I2C 通信的起始信號(hào)的定義是 SCL 為高電平期間,SDA 由高電平向低電平變化產(chǎn)生一個(gè)下降沿,表示起始信號(hào),如圖14-3中的 Start 部分所示。

數(shù)據(jù)傳輸:首先,UART 是低位在前,高位在后;而 I2C 通信是高位在前,低位在后。其次,UART 通信數(shù)據(jù)位是固定長(zhǎng)度,波特率分之一,一位一位固定時(shí)間發(fā)送完畢就可以了。而 I2C 沒(méi)有固定波特率,但是有時(shí)序的要求,要求當(dāng) SCL 在低電平的時(shí)候,SDA 允許變化,也就是說(shuō),發(fā)送方必須先保持 SCL 是低電平,才可以改變數(shù)據(jù)線 SDA,輸出要發(fā)送的當(dāng)前數(shù)據(jù)的一位;而當(dāng) SCL 在高電平的時(shí)候,SDA 絕對(duì)不可以變化,因?yàn)檫@個(gè)時(shí)候,接收方要來(lái)讀取當(dāng)前 SDA 的電平信號(hào)是0還是1,因此要保證 SDA 的穩(wěn)定,如圖14-3中的每一位數(shù)據(jù)的變化,都是在 SCL 的低電平位置。8位數(shù)據(jù)位后邊跟著的是一位應(yīng)答位,應(yīng)答位我們后邊還要具體介紹。

停止信號(hào):UART 通信的停止位是一位固定的高電平信號(hào);而 I2C 通信停止信號(hào)的定義是 SCL 為高電平期間,SDA 由低電平向高電平變化產(chǎn)生一個(gè)上升沿,表示結(jié)束信號(hào),如圖14-3中的 Stop 部分所示。