CoolRunner-Ⅱ器件的I2C接口主狀態(tài)機(jī)
發(fā)布時(shí)間:2008/9/19 0:00:00 訪問(wèn)次數(shù):692
i2c接口主狀態(tài)機(jī)如圖所示。
如圖 i2c接口主狀態(tài)機(jī)
無(wú)論是主模式,還是從模式,狀態(tài)機(jī)都是相同的。在每個(gè)狀態(tài),模式都會(huì)被檢測(cè),以決定輸出和下一個(gè)狀態(tài)。如果仲裁失敗或 i2c控制器被確定為從模式,控制器會(huì)自動(dòng)由主模式切換到從模式。
此狀態(tài)機(jī)用到一個(gè)位計(jì)數(shù)器和兩個(gè)移位寄存器,位計(jì)數(shù)器對(duì)從總線上接收到的位進(jìn)行計(jì)數(shù),其中一個(gè)移位寄存器用來(lái)存儲(chǔ)i2c的header;另一個(gè)用來(lái)存儲(chǔ)接收到的數(shù)據(jù)或待發(fā)送的數(shù)據(jù)。
當(dāng)檢測(cè)到start信號(hào)時(shí),狀態(tài)機(jī)進(jìn)入header狀態(tài)。在header狀態(tài),如果是主模式,mbdr寄存器中的header被發(fā)送。當(dāng)所有8位數(shù)據(jù)發(fā)送完畢時(shí),狀態(tài)機(jī)轉(zhuǎn)入ack header。
在ack_header狀態(tài),如果coolrunner-ii i2c控制器工作在主模式,將會(huì)采樣sda,以確認(rèn)從設(shè)備是否有應(yīng)答。如果沒(méi)有應(yīng)答,狀態(tài)轉(zhuǎn)入stop;如果有應(yīng)答,lsb=1時(shí)進(jìn)入rcv_data, lsb=0時(shí)進(jìn)入xmit_data。
i2c header移位寄存器與madr進(jìn)行比較,如果匹配,則coolrunner-ii i2c為被尋址的從設(shè)備。模式立刻切換到從模式,狀態(tài)寄存器mbsr中maas位被置位,sda線將會(huì)按照txak中的設(shè)置應(yīng)答當(dāng)前主設(shè)備。
在rcv_dat狀態(tài),sda數(shù)據(jù)被入i2c移位寄存器,以供uc讀取。當(dāng)所有數(shù)據(jù)位被接收到,狀態(tài)機(jī)轉(zhuǎn)入ack_data,txak被輸出到sda。
在xmit_data狀態(tài),mbdr寄存器中數(shù)據(jù)被送到sda.當(dāng)發(fā)送整的字節(jié)后,狀態(tài)轉(zhuǎn)入wait_ack.如果檢測(cè)到ack,則狀態(tài)再次進(jìn)入xmit_data,直到產(chǎn)生stop條件或沒(méi)有收到ack條件.必須注意提,在數(shù)據(jù)傳輸過(guò)程中uc速率必須跟上i2c控制器收發(fā)數(shù)據(jù)的速率.如果中斷使能,則當(dāng)一個(gè)字節(jié)的數(shù)據(jù)發(fā)送或接由結(jié)束時(shí)就會(huì)產(chǎn)生一個(gè)中斷,mcf位將會(huì)被置位.在ack狀態(tài),數(shù)據(jù)在uc和控制器之間轉(zhuǎn)輸。在此過(guò)程中,i2c控制器不會(huì)等待uc操作。
如果coo1runner-ⅱi2c工作在主模式,在stop狀態(tài)告知scl/start/stop發(fā)生器產(chǎn)生一個(gè)stop條件,最后狀態(tài)進(jìn)入idle。
歡迎轉(zhuǎn)載,信息來(lái)自維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
i2c接口主狀態(tài)機(jī)如圖所示。
如圖 i2c接口主狀態(tài)機(jī)
無(wú)論是主模式,還是從模式,狀態(tài)機(jī)都是相同的。在每個(gè)狀態(tài),模式都會(huì)被檢測(cè),以決定輸出和下一個(gè)狀態(tài)。如果仲裁失敗或 i2c控制器被確定為從模式,控制器會(huì)自動(dòng)由主模式切換到從模式。
此狀態(tài)機(jī)用到一個(gè)位計(jì)數(shù)器和兩個(gè)移位寄存器,位計(jì)數(shù)器對(duì)從總線上接收到的位進(jìn)行計(jì)數(shù),其中一個(gè)移位寄存器用來(lái)存儲(chǔ)i2c的header;另一個(gè)用來(lái)存儲(chǔ)接收到的數(shù)據(jù)或待發(fā)送的數(shù)據(jù)。
當(dāng)檢測(cè)到start信號(hào)時(shí),狀態(tài)機(jī)進(jìn)入header狀態(tài)。在header狀態(tài),如果是主模式,mbdr寄存器中的header被發(fā)送。當(dāng)所有8位數(shù)據(jù)發(fā)送完畢時(shí),狀態(tài)機(jī)轉(zhuǎn)入ack header。
在ack_header狀態(tài),如果coolrunner-ii i2c控制器工作在主模式,將會(huì)采樣sda,以確認(rèn)從設(shè)備是否有應(yīng)答。如果沒(méi)有應(yīng)答,狀態(tài)轉(zhuǎn)入stop;如果有應(yīng)答,lsb=1時(shí)進(jìn)入rcv_data, lsb=0時(shí)進(jìn)入xmit_data。
i2c header移位寄存器與madr進(jìn)行比較,如果匹配,則coolrunner-ii i2c為被尋址的從設(shè)備。模式立刻切換到從模式,狀態(tài)寄存器mbsr中maas位被置位,sda線將會(huì)按照txak中的設(shè)置應(yīng)答當(dāng)前主設(shè)備。
在rcv_dat狀態(tài),sda數(shù)據(jù)被入i2c移位寄存器,以供uc讀取。當(dāng)所有數(shù)據(jù)位被接收到,狀態(tài)機(jī)轉(zhuǎn)入ack_data,txak被輸出到sda。
在xmit_data狀態(tài),mbdr寄存器中數(shù)據(jù)被送到sda.當(dāng)發(fā)送整的字節(jié)后,狀態(tài)轉(zhuǎn)入wait_ack.如果檢測(cè)到ack,則狀態(tài)再次進(jìn)入xmit_data,直到產(chǎn)生stop條件或沒(méi)有收到ack條件.必須注意提,在數(shù)據(jù)傳輸過(guò)程中uc速率必須跟上i2c控制器收發(fā)數(shù)據(jù)的速率.如果中斷使能,則當(dāng)一個(gè)字節(jié)的數(shù)據(jù)發(fā)送或接由結(jié)束時(shí)就會(huì)產(chǎn)生一個(gè)中斷,mcf位將會(huì)被置位.在ack狀態(tài),數(shù)據(jù)在uc和控制器之間轉(zhuǎn)輸。在此過(guò)程中,i2c控制器不會(huì)等待uc操作。
如果coo1runner-ⅱi2c工作在主模式,在stop狀態(tài)告知scl/start/stop發(fā)生器產(chǎn)生一個(gè)stop條件,最后狀態(tài)進(jìn)入idle。
歡迎轉(zhuǎn)載,信息來(lái)自維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
熱門點(diǎn)擊
- Coo1Runner-Ⅱ器件實(shí)現(xiàn)IDE總線接
- Coo1Runner-Ⅱ器件實(shí)現(xiàn)雙向多路選擇
- Coo1Runner-Ⅱ器件I2C接口協(xié)議
- CoolRunner-II器件的ISO 78
- Coo1Runner-Ⅱ器件實(shí)現(xiàn)SRAM控制
- CoolRunner-Ⅱ器件的OL、SDA、
- CoolRunner-Ⅱ器件的I2C總線仲裁
- CoolRunner-II實(shí)現(xiàn)IrDA和UA
- CoolRunner-Ⅱ器件的I2C接口主狀
- CoolRunner-II CPLD設(shè)計(jì)
推薦技術(shù)資料
- DS2202型示波器試用
- 說(shuō)起數(shù)字示波器,普源算是國(guó)內(nèi)的老牌子了,F(xiàn)QP8N60... [詳細(xì)]
- MOSFET 電感單片降壓開關(guān)模式變換器優(yōu)勢(shì)
- SiC MOSFET 和 IG
- 新型 電隔離無(wú)芯線性霍爾效應(yīng)電
- 業(yè)界超小絕對(duì)位置編碼器技術(shù)參數(shù)設(shè)計(jì)
- 高帶寬、更高分辨率磁角度傳感技術(shù)應(yīng)用探究
- MagAlpha 角度位置傳感
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究