基于I2C總線的單主多從單片機(jī)之間的通信
圖3 從機(jī)接收流程圖
4.2 編程中的注意事項(xiàng)
a)在主機(jī)或從機(jī)初始化時(shí),一定要設(shè)定數(shù)據(jù)傳輸方向;
b)由于每次發(fā)送/接收數(shù)據(jù)時(shí)TWCR寄存器的中斷標(biāo)志位必須置位,因此程序中要有等待TWCR寄存器中斷位置位程序,同時(shí),為了避免由于某種原因?qū)е轮袛辔徊荒苤梦辉斐傻却绦蜻M(jìn)入死循環(huán),在等待中斷位置位程序中要有等待超時(shí)返回程序。
c)I2C總線的使用,除了基本的啟動(dòng)、結(jié)束、應(yīng)答、非應(yīng)答子程序外,還應(yīng)有應(yīng)答位檢查、發(fā)送和接收單字節(jié)、發(fā)送和接收多字節(jié)等子程序。
5 結(jié)論
作者在程序流程的每個(gè)關(guān)鍵部分都設(shè)置了錯(cuò)誤查詢和錯(cuò)誤處理,使得I2C程序能夠從錯(cuò)誤中自動(dòng)恢復(fù),避免了由于I2C通信導(dǎo)致的錯(cuò)誤而使得系統(tǒng)無(wú)法正常工作,文中還給出了部分發(fā)送子程序和編程注意事項(xiàng)。對(duì)于圖2和圖3的I2C通信流程,作者已在多個(gè)科研項(xiàng)目中進(jìn)行了編程使用。實(shí)踐證明,按上述流程編寫I2C通信程序,主從單片機(jī)之間的通信非常可靠。
本文作者創(chuàng)新點(diǎn):程序流程的每個(gè)關(guān)鍵部分都設(shè)置了錯(cuò)誤查詢和錯(cuò)誤處理,使心通信能夠從錯(cuò)誤中自動(dòng)恢復(fù),提高了使用I2C通信的可靠性,并且給出了避免死循環(huán)的錯(cuò)誤處理程序。
參考文獻(xiàn):
[1].Atmega128datasheethttp://www.dzsc.com/datasheet/Atmega128_html.
[2].Atmega168datasheethttp://www.dzsc.com/datasheet/Atmega168_.html.
[3].LPC2292datasheethttp://www.dzsc.com/datasheet/LPC2292_454556.html.
通信相關(guān)文章:通信原理
雙控開(kāi)關(guān)相關(guān)文章:雙控開(kāi)關(guān)原理
評(píng)論