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