8051單片機(jī)的I2C接口并行擴(kuò)展
(2)I2C總線未連接,要進(jìn)行讀操作。8051的操作:
①電路寫控制字W2;②寫器件內(nèi)地址第1字節(jié); ③當(dāng)bz=1時(shí)寫器件內(nèi)地址第2字節(jié)…;④當(dāng)bz=1時(shí)讀第1字節(jié)…。
I2C的操作:
當(dāng)接收到該控制字W2后操作為:①置bz=1,啟動(dòng)I2C總線;②根據(jù)控制字中的器件地址以出第1個(gè)字節(jié)(器件選擇、寫);③發(fā)送器件內(nèi)地址;④關(guān)閉I2C總線;⑤啟動(dòng)I2C總線;⑥第2次發(fā)送器件選擇字節(jié)、讀;⑦接收數(shù)據(jù)內(nèi)容,置bz=1…。
(3)I2C總線已連接,換一個(gè)I2C器件或換新地址,要進(jìn)行寫操作。
8051的操作:
①寫控制字W5;②當(dāng)bz=1時(shí)寫器件內(nèi)地址第1字節(jié);③當(dāng)bz=1時(shí)寫器件內(nèi)地址第2字節(jié)…;④當(dāng)bz=1時(shí)寫第1字節(jié)…。
I2C的操作:
當(dāng)接收到該控制字W5后操作為:①置bz=1,關(guān)閉I2C總線;②啟動(dòng)I2C總線;③根據(jù)控制字中的器件地址發(fā)出第1個(gè)字節(jié)(器件選擇、寫);④發(fā)送器件內(nèi)地址,置bz=1。
(4)I2C總線已連接,換一個(gè)I2C器件或換新地址,要進(jìn)行讀操作。
8051的操作:
①電路寫控制字W6;②寫器件內(nèi)地址第1字節(jié); ③當(dāng)bz=1時(shí)寫器件內(nèi)地址第2字節(jié)…;④當(dāng)bz=1時(shí)讀第1字節(jié)…。
I2C的操作:
當(dāng)接收到該控制字W6后操作為:①置bz=1,關(guān)閉I2C總線;②啟動(dòng)I2C總線;③根據(jù)控制字中的器件地址發(fā)出第1個(gè)字節(jié)(器件選擇、寫);④發(fā)送器件內(nèi)地址;⑤關(guān)閉I2C總線;⑥啟動(dòng)I2C總線;⑦第2次發(fā)送器件選擇字節(jié)、讀;⑧接收數(shù)據(jù)內(nèi)容,置bz=1…。
4 結(jié) 語(yǔ)
擴(kuò)展接口芯片設(shè)計(jì)采用VHDL語(yǔ)言實(shí)現(xiàn),芯片設(shè)計(jì)的全部程序均通過ALTERA公司的MAXPLUSⅡ軟件編譯,仿真結(jié)果正確。編譯、仿真后的VHDL 程序經(jīng)下載線下載至EPM7128SLC84-15芯片,驗(yàn)證正確。設(shè)計(jì)的接口時(shí)鐘要求6 MHz,可直接和單片機(jī)接口連接。
擴(kuò)展后的接口,傳送一位數(shù)據(jù)只需要4個(gè)時(shí)鐘周期。擴(kuò)展的接口,訪問I2C器件的時(shí)鐘可以自行設(shè)定,他們之間的通信不需要等待8051。一旦8051的并行數(shù)據(jù)送出,該接口可立即用自己設(shè)定的速度傳送。從而該接口在8051和I2C器件之間通信時(shí),數(shù)據(jù)的傳送可達(dá)到并行的速度,這就是本接口擴(kuò)展設(shè)計(jì)的最大優(yōu)點(diǎn)?! ?p>由于使用的設(shè)計(jì)軟件是ALTERA公司的MAXPLUSⅡ軟件,下載仿真芯片為EPM7128SLC84該芯片延遲時(shí)間為15 s,延時(shí)時(shí)間過長(zhǎng);接口的設(shè)計(jì)本身對(duì)數(shù)據(jù)傳輸?shù)臅r(shí)鐘也可進(jìn)一步減少,更進(jìn)一步提高數(shù)據(jù)傳輸?shù)乃俣取;谝陨蟽牲c(diǎn),還需要對(duì)本設(shè)計(jì)進(jìn)一步優(yōu)化,以期進(jìn)一步提高性能與速度。
參考文獻(xiàn)
[1]何立明.I2C總線應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航天航空大學(xué)出版社,1995.
[2]曾繁泰,陳美金.VHDL程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2002.
評(píng)論