I2C總線(xiàn)AT24C02芯片應用
void write_address(uchar address,uchar date)
{
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
uchar read_address(uchar address)
{
uchar date;
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
start();
write_byte(0xa1);
respons();
date=read_byte();
stop();
return date;
}
void main()
{
init();
write_address(1,0xfe);
delay1ms(100);
P2=read_address(1);
while(1);
}
I2C總線(xiàn)介紹:
I2C總線(xiàn)(Inter IC Bus)由飛利浦公司推出,是近年來(lái)微電子控制領(lǐng)域廣泛采用的一宗新型總線(xiàn)標準,它使同步通信的一種特殊形式,具有接口少、控制簡(jiǎn)單、器件封裝形體小、通信速率較高等優(yōu)點(diǎn)(可達400Kbps)。在主從通信中,可以有多個(gè)I2C總線(xiàn)器件同時(shí)接到I2C總線(xiàn)上,所有與I2C總線(xiàn)兼容的器件都具有標準的接口,通過(guò)地址來(lái)識別通信對象,是她可以經(jīng)由I2C總線(xiàn)相互直接通信。
I2C總線(xiàn)由數據線(xiàn)和時(shí)鐘線(xiàn)SDA和SCL兩條線(xiàn)構成,可發(fā)送數據可接收數據。于CPU及被控IC間、IC與IC間均可雙向傳送,各器件均并于總線(xiàn)上,各自有唯一地址。信息傳輸中,I2C總線(xiàn)上的各器件既是被控又是控制器件,既是發(fā)送器又是接收器。CPU發(fā)出的控制信號分為地址碼和數據嗎兩部分;地址碼選址;數據嗎送數。故而各IC雖同并于總線(xiàn)上但卻各自獨立。
I2C總線(xiàn)硬件結構圖
圖中:ACL時(shí)鐘,SDA數據 接上拉電阻,故總線(xiàn)空閑是高電平,任一器件變低均將拉低電平故曰:各器件的時(shí)鐘線(xiàn)及數據線(xiàn)乃“與”關(guān)系。
通信格式為 時(shí)鐘高時(shí)下跳開(kāi)始尋地址 發(fā)送一字節 8位中低位為數據方向 0為我黨要向下面發(fā)指令 形象的為“O”,俗稱(chēng)為蛋,如川蛋:“川O001”,陜蛋:“陜O001”都是當官的向下發(fā)指令,發(fā)飆的,當然,單片機哎平方C系統呢有點(diǎn)民主成分,從機可以向主機傳信息,既發(fā)1,形象的成為“1”:咦 你們小麻蝦 小老百信還要上方發(fā)信息呀????! 事實(shí)上是的 0為下蛋-----下傳數據;1為上訪(fǎng)-----上傳數據。記住了吧!
時(shí)鐘為高SCL=1時(shí) 數據那得穩定 俗稱(chēng)維穩期間當然 時(shí)鐘撤了 SCL=0時(shí) 隨便你蝦子變化數據。
發(fā)送啟動(dòng)信號 那得我們主機發(fā)了 黨外人士沒(méi)這個(gè)權利 在時(shí)鐘為高 警察在的時(shí) 本地圖片,請重新上傳候 主機發(fā)一個(gè)下跳沿信號 表示開(kāi)會(huì )了 開(kāi)始了既:SCL=1時(shí) SDA 你們老百姓就等著(zhù)查戶(hù)口吧!
當官的在警察在時(shí)下跳了 于是衙門(mén)發(fā)令查戶(hù)口高七位為你我家庭住址,最低一位為數據方向 上面已表在此老子不說(shuō)了。
各民眾,自己根據收到的地址碼對號入座,發(fā)現是自己 那就準備收吧---數據。
而且在收數據時(shí) 每次收到了 都得回答“諾”.若是犯人那得點(diǎn)頭說(shuō)“政府好”,當然主機可以不回答 主機不回答視為停止傳數據的命令 注意了 每次回答都必須是時(shí)鐘為高時(shí)拉數據線(xiàn)為低哦!不得有誤。
主機若在時(shí)鐘為高時(shí)上跳---警察在的時(shí)候領(lǐng)導跳上臺那是表示結束了gameover了 數據傳送動(dòng)作停止了。
2,單片機模擬I2C總線(xiàn)通信
目前很多單片機都有硬硬的I2C總線(xiàn)通信控制單元,工作時(shí)無(wú)需我們介入自動(dòng)工作,但可憐的51單片機沒(méi)有 這個(gè)接口我們不得不通過(guò)軟件模擬I2C總線(xiàn)的工作時(shí)序,在要用時(shí)。調用這些子函數即可。
有仨方式:一,主機向從機發(fā)數據,數據傳送方向在整個(gè)過(guò)程中不變。
二,主機在第一個(gè)字節后,立即從從機讀數。
三,在傳送過(guò)程中,當需要改變傳送方向時(shí),需將起始信號和從機地址重復發(fā)放一次,而兩次讀寫(xiě)方向的那個(gè)位剛好相反。
評論