例說單片機(jī)數(shù)據(jù)通信之模擬IIC通信
IIC 即Inter-Integrated Circuit(集成電路總線),這種總線類型是由飛利浦半導(dǎo)體公司在八十年代初設(shè)計(jì)出來的,主要是用來連接整體電路(ICS) ,IIC是一種多向控制總線,也就是說多個(gè)芯片可以連接到同一總線結(jié)構(gòu)下,同時(shí)每個(gè)芯片都可以作為實(shí)時(shí)數(shù)據(jù)傳輸?shù)目刂圃?。這種方式簡化了信號傳輸總線。
本文引用地址:http://www.ex-cimer.com/article/248808.htmI2C串行總線一般有兩根信號線,一根是雙向的數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。所有接到I2C總線設(shè)備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設(shè)備的時(shí)鐘線SCL接到總線的SCL上。以51單片機(jī)和AT24C02介紹IO模擬IIC通信。
啟始與停止
啟始條件:必須在所有命令之前發(fā)送,時(shí)鐘線保持高電平期間,數(shù)據(jù)線電平從高到低的跳變作為IIC總線的啟動(dòng)信號。
停止條件:時(shí)鐘線保持高電平期間,數(shù)據(jù)線電平從低到高的跳變作為IIC總線的停止信號。操作結(jié)束時(shí)必須發(fā)送停止條件。
void startbit()
{
clrSCL();
setSDA();
setSCL(); //時(shí)鐘為高時(shí)
clrSDA(); //SDA下降沿
clrSCL();
}
void stopbit()
{
clrSCL();
clrSDA();
setSCL(); //時(shí)鐘為高時(shí)
setSDA(); //SDA上升沿
clrSCL();
}
應(yīng)答信號
每次數(shù)據(jù)傳送成功后,從設(shè)備發(fā)送一個(gè)應(yīng)答信號。當(dāng)?shù)诰艂€(gè)時(shí)鐘信號產(chǎn)生時(shí),產(chǎn)生應(yīng)答信號的器件將SDA下拉為低,通知已經(jīng)接收到8位數(shù)據(jù)。
void respond()
{
unsigned char i = 0;
setSDA(); //釋放總線
setSCL(); //時(shí)鐘
while(SDA != 0)
{
i++;
if(i > 200) break;
}
clrSCL();
}
讀寫字節(jié)操作
IIC總線協(xié)議定義如下:
1. 只有在總線非忙時(shí)才被允許進(jìn)行數(shù)據(jù)傳輸。
2. 在數(shù)據(jù)傳輸時(shí),當(dāng)時(shí)鐘線為高電平,數(shù)據(jù)線必須為固定狀態(tài),不允許跳變,時(shí)鐘線為高電平時(shí)數(shù)據(jù)線的任何電平變化都會(huì)被當(dāng)做總線的啟動(dòng)或停止條件
模擬信號相關(guān)文章:什么是模擬信號
51單片機(jī)相關(guān)文章:51單片機(jī)教程
pic相關(guān)文章:pic是什么
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
評論