日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀] IIC 即Inter-Integrated Circuit(集成電路總線),這種總線類型是由飛利浦半導體公司在八十年代初設計出來的,主要是用來連接整體電路(ICS) ,IIC是一種多向控制總線,也就是說多個芯片可以連接到同一總線結構下,

 IIC 即Inter-Integrated Circuit(集成電路總線),這種總線類型是由飛利浦半導體公司在八十年代初設計出來的,主要是用來連接整體電路(ICS) ,IIC是一種多向控制總線,也就是說多個芯片可以連接到同一總線結構下,同時每個芯片都可以作為實時數(shù)據(jù)傳輸?shù)目刂圃?。這種方式簡化了信號傳輸總線。

I2C串行總線一般有兩根信號線,一根是雙向的數(shù)據(jù)線SDA,另一根是時鐘線SCL。所有接到I2C總線設備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設備的時鐘線SCL接到總線的SCL上。以51單片機和AT24C02介紹IO模擬IIC通信。

啟始與停止

啟始條件:必須在所有命令之前發(fā)送,時鐘線保持高電平期間,數(shù)據(jù)線電平從高到低的跳變作為IIC總線的啟動信號。

停止條件:時鐘線保持高電平期間,數(shù)據(jù)線電平從低到高的跳變作為IIC總線的停止信號。操作結束時必須發(fā)送停止條件。

void startbit()

{

clrSCL();

setSDA();

setSCL(); //時鐘為高時

clrSDA(); //SDA下降沿

clrSCL();

}

void stopbit()

{

clrSCL();

clrSDA();

setSCL(); //時鐘為高時

setSDA(); //SDA上升沿

clrSCL();

}

應答信號

每次數(shù)據(jù)傳送成功后,從設備發(fā)送一個應答信號。當?shù)诰艂€時鐘信號產生時,產生應答信號的器件將SDA下拉為低,通知已經接收到8位數(shù)據(jù)。

void respond()

{

unsigned char i = 0;

setSDA(); //釋放總線

setSCL(); //時鐘

while(SDA != 0)

{

i++;

if(i > 200) break;

}

clrSCL();

}

讀寫字節(jié)操作

IIC總線協(xié)議定義如下:

1. 只有在總線非忙時才被允許進行數(shù)據(jù)傳輸。

2. 在數(shù)據(jù)傳輸時,當時鐘線為高電平,數(shù)據(jù)線必須為固定狀態(tài),不允許跳變,時鐘線為高電平時數(shù)據(jù)線的任何電平變化都會被當做總線的啟動或停止條件

void writeByte(unsigned char dat)

{

unsigned char i = 0;

for(i = 0;i < 8;i++)

{

clrSCL(); //拉低時鐘線,改變SDA線的電平

if(dat & 0x80) setSDA();

else clrSDA();

setSCL(); //SDA電平穩(wěn)定后,拉高時鐘線

dat <<= 1;

}

clrSCL();

}

unsigned char readByte()

{

unsigned char i = 0,tmp = 0;

for(i = 0;i < 8;i++)

{

clrSCL(); //拉低時鐘線

tmp <<= 1; //準備讀取數(shù)據(jù)

setSCL(); //拉高時鐘線

if(SDA) tmp |= 0x01;

}

clrSCL();

return tmp;

}

AT24C02讀寫操作

void writeAT24XX(unsigned char addr,unsigned char dat)

{

startbit(); //起始信號

writeByte(0xa0); //器件地址

respond();

writeByte(addr); //器件內部地址

respond();

writeByte(dat); //數(shù)據(jù)

respond();

stopbit(); //停止

}

unsigned char readAT24XX(unsigned char addr)

{

unsigned char dat;

startbit(); //起始信號

writeByte(0xa0); //器件地址

respond();

writeByte(addr); //器件內部地址

respond();

startbit(); //起始信號

writeByte(0xa1); //器件地址

respond();

dat = readByte(); //數(shù)據(jù)

stopbit(); //停止

return dat;

}

主函數(shù)部分內容以及程序運行效果:

void main()

{

unsigned char dat;

initUart();

sendString("UART INIT OK!!!\n"); //串口通信初始化

sendString("write 0x05 --> addr 0x00 \n");//寫入5到期間內部地址0

writeAT24XX(0x00,0x05); //寫入數(shù)據(jù)

sendString("read dat <-- addr 0x00 \n"); //讀出寫入數(shù)據(jù)

dat = readAT24XX(0x00); //讀出數(shù)據(jù)

sendString("dat-->"); //打印

sendByte(dat + '0');

while(1);

}

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

本屆年會將在上海(11月13-14日)、北京(11月19-20日)和深圳(11月27-28日)舉行,面向嵌入式設計工程師推出25門技術課程

關鍵字: 嵌入式 MCU 模擬

8位單片機在嵌入式設計領域已經成為半個多世紀以來的主流選擇。盡管嵌入式系統(tǒng)市場日益復雜,8位單片機依然不斷發(fā)展,積極應對新的挑戰(zhàn)和系統(tǒng)需求。如今,Microchip推出的8位PIC?和AVR?單片機系列,配備了先進的獨立...

關鍵字: 單片機 嵌入式 CPU

在嵌入式系統(tǒng)開發(fā)中,程序燒錄是連接軟件設計與硬件實現(xiàn)的關鍵環(huán)節(jié)。當前主流的單片機燒錄技術已形成ICP(在電路編程)、ISP(在系統(tǒng)編程)、IAP(在應用編程)三大技術體系,分別對應開發(fā)調試、量產燒錄、遠程升級等不同場景。...

關鍵字: 單片機 ISP ICP IAP 嵌入式系統(tǒng)開發(fā)

在嵌入式系統(tǒng)開發(fā)中,看門狗(Watchdog Timer, WDT)是保障系統(tǒng)可靠性的核心組件,其初始化時機的選擇直接影響系統(tǒng)抗干擾能力和穩(wěn)定性。本文從硬件架構、軟件流程、安全規(guī)范三個維度,系統(tǒng)分析看門狗初始化的最佳實踐...

關鍵字: 單片機 看門狗 嵌入式系統(tǒng)

本文中,小編將對單片機予以介紹,如果你想對它的詳細情況有所認識,或者想要增進對它的了解程度,不妨請看以下內容哦。

關鍵字: 單片機 開發(fā)板 Keil

蘇州2025年8月21日 /美通社/ -- 2025年7月,由博瑞醫(yī)藥聯(lián)合AI藥物設計平臺予路乾行共同開發(fā)的候選藥物BGM1812,正式發(fā)表于國際藥物化學權威期刊《Journal of Medicinal Chemist...

關鍵字: AI技術 動力學 模擬 BSP

隨著單片機系統(tǒng)越來越廣泛地應用于消費類電子、醫(yī)療、工業(yè)自動化、智能化儀器儀表、航空航天等各領域,單片機系統(tǒng)面臨著電磁干擾(EMI)日益嚴重的威脅。電磁兼容性(EMC)包含系統(tǒng)的發(fā)射和敏感度兩方面的問題。

關鍵字: 單片機 電磁兼容

以下內容中,小編將對單片機的相關內容進行著重介紹和闡述,希望本文能幫您增進對單片機的了解,和小編一起來看看吧。

關鍵字: 單片機 復位電路

在這篇文章中,小編將為大家?guī)韱纹瑱C的相關報道。如果你對本文即將要講解的內容存在一定興趣,不妨繼續(xù)往下閱讀哦。

關鍵字: 單片機 異常復位

今天,小編將在這篇文章中為大家?guī)韱纹瑱C的有關報道,通過閱讀這篇文章,大家可以對它具備清晰的認識,主要內容如下。

關鍵字: 單片機 仿真器
關閉