例說(shuō)單片機數據通信之模擬IIC通信
IIC 即Inter-Integrated Circuit(集成電路總線(xiàn)),這種總線(xiàn)類(lèi)型是由飛利浦半導體公司在八十年代初設計出來(lái)的,主要是用來(lái)連接整體電路(ICS) ,IIC是一種多向控制總線(xiàn),也就是說(shuō)多個(gè)芯片可以連接到同一總線(xiàn)結構下,同時(shí)每個(gè)芯片都可以作為實(shí)時(shí)數據傳輸的控制源。這種方式簡(jiǎn)化了信號傳輸總線(xiàn)。
本文引用地址:http://dyxdggzs.com/article/248808.htmI2C串行總線(xiàn)一般有兩根信號線(xiàn),一根是雙向的數據線(xiàn)SDA,另一根是時(shí)鐘線(xiàn)SCL。所有接到I2C總線(xiàn)設備上的串行數據SDA都接到總線(xiàn)的SDA上,各設備的時(shí)鐘線(xiàn)SCL接到總線(xiàn)的SCL上。以51單片機和AT24C02介紹IO模擬IIC通信。
啟始與停止

啟始條件:必須在所有命令之前發(fā)送,時(shí)鐘線(xiàn)保持高電平期間,數據線(xiàn)電平從高到低的跳變作為IIC總線(xiàn)的啟動(dòng)信號。
停止條件:時(shí)鐘線(xiàn)保持高電平期間,數據線(xiàn)電平從低到高的跳變作為IIC總線(xiàn)的停止信號。操作結束時(shí)必須發(fā)送停止條件。
void startbit()
{
clrSCL();
setSDA();
setSCL(); //時(shí)鐘為高時(shí)
clrSDA(); //SDA下降沿
clrSCL();
}
void stopbit()
{
clrSCL();
clrSDA();
setSCL(); //時(shí)鐘為高時(shí)
setSDA(); //SDA上升沿
clrSCL();
}
應答信號

每次數據傳送成功后,從設備發(fā)送一個(gè)應答信號。當第九個(gè)時(shí)鐘信號產(chǎn)生時(shí),產(chǎn)生應答信號的器件將SDA下拉為低,通知已經(jīng)接收到8位數據。
void respond()
{
unsigned char i = 0;
setSDA(); //釋放總線(xiàn)
setSCL(); //時(shí)鐘
while(SDA != 0)
{
i++;
if(i > 200) break;
}
clrSCL();
}
讀寫(xiě)字節操作

IIC總線(xiàn)協(xié)議定義如下:
1. 只有在總線(xiàn)非忙時(shí)才被允許進(jìn)行數據傳輸。
2. 在數據傳輸時(shí),當時(shí)鐘線(xiàn)為高電平,數據線(xiàn)必須為固定狀態(tài),不允許跳變,時(shí)鐘線(xiàn)為高電平時(shí)數據線(xiàn)的任何電平變化都會(huì )被當做總線(xiàn)的啟動(dòng)或停止條件
模擬信號相關(guān)文章:什么是模擬信號
51單片機相關(guān)文章:51單片機教程
pic相關(guān)文章:pic是什么
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
數字通信相關(guān)文章:數字通信原理
通信相關(guān)文章:通信原理
評論