CoolRunner-Ⅱ器件的微處理器接口邏輯
uC接口是一個(gè)異步接口,與I2C之間的交互流程如圖1所示。
如圖 uC與I2C之間的交互流程
uC總線協(xié)議在Coo1Runner-Ⅱ中是由一個(gè)狀態(tài)機(jī)實(shí)現(xiàn)的,如圖2所示。
在空閑狀態(tài),微控制器將地址送上地址總經(jīng),并設(shè)置R_W、AS和DS狀態(tài)。如果在定周期,微控制器也會將待寫數(shù)據(jù)送上數(shù)據(jù)總線。AS有效表示地址總線上的地址有效,DS有效表示數(shù)據(jù)總線上數(shù)據(jù)有效;如果是在讀周期,微控制器驅(qū)動數(shù)據(jù)總線為三態(tài)。同樣,AS有效表示地址總線上的地址有效,但是DS有效表示I2C控制器可以將數(shù)據(jù)送到數(shù)據(jù)總線。
圖2 uC總線接口狀態(tài)機(jī)
在AS有效的情況下,I2C控制器狀態(tài)進(jìn)入ADDR狀態(tài)。在此狀態(tài),一方面進(jìn)行地址譯碼;另一方面將判斷此設(shè)備是不是被尋址的設(shè)備,并使能內(nèi)部寄存器。如果被尋址的是CoolRunner-Ⅱ I2C設(shè)備,并且DS有效,則I2C控制器將進(jìn)入DATA_TRS狀態(tài)。如果是讀操作,被請求的數(shù)據(jù)會被送到數(shù)據(jù)總線;如果是寫操作,則數(shù)據(jù)總線上的數(shù)據(jù)被鎖存在內(nèi)部被尋址的寄存器中,CoolRunner-II I2C設(shè)備自動進(jìn)入ASSERT_DTACK狀態(tài),DTACK有效。讀操作時(shí)表示總線上數(shù)據(jù)準(zhǔn)各好,寫操作時(shí)表示數(shù)據(jù)已經(jīng)被接收到。
在DTACK有效的情況下,寫操作時(shí),uC將撤銷數(shù)據(jù);讀操作時(shí),uC鎖存總線上的數(shù)據(jù)。R_W信號線被置為讀,并且釋放AS和DS,表明數(shù)據(jù)傳輸完畢。AS和DS的釋放會促使CoolRunner-II I2C控制器釋放DTACK,狀態(tài)機(jī)進(jìn)入IDLE狀態(tài)。