IIC 的一些特征:
兩條總線:串行數據總線(SDA)和串行時鐘總線(SCL)
真正的多主機總線
連接到相同總線的ic數量只受到總線的最大電容400pF限制。
串行8位雙向數據在標準模式下可達100K bit/s
快速模式400K bit/s,高速模式下3.4Mbit/s.
數據有效性規定:
IIC總線在進行數據傳輸時,SCL在高電平區間,SDA上的電平必須保持穩定
SDA的數據的高或者低電平狀態只有在SCL線的時鐘信號是低電平時才能改變。
起始和停止條件:
起始:SCL高電平時,SDA由高電平向低電平切換。
停止:SCL高電平時,SDA由低電平向高電平切換。
模擬時序如下:
起始與終止:
應答與非應答:
總線上進行一次數據傳輸的通信格式:
相關模擬時序的驅動函數:包括(start,stop,respons,write_byte,read_byte)
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
//SCL高電平區間,SDA一個下降沿啟動信號
void Start()
{
SDA=1;
delay();
SCL=1;
delay();
SDA=0;
delay();
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
//SCL在高電平區間,SDA一個上升沿停止信號
void Stop()
{
SDA=0;
delay();
SCL=1;
delay();
SDA=1;
delay();
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
//SCL在高電平區間,SDA被從設備拉低表示應答,
//(SDA==1)&&(i<255)表示如果一段時間未收到從期間
//的應答則默認從期間已經收到而不再等待應答信號
void Respons()
{
uchari=0;
SCL=1;
delay();
while((SDA==1)&&(i<255))
i++;
SCL=0;
delay();
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
//CY 為PSW寄存器中的CY位
//先移位,然互使用SCL控制發出去
void Write_Byte(uchar date)
{
uchari,temp;
temp=tada;
for(i=0;i<8;i++)
{
temp=temp<<1;
SCL=0;
delay();
SDA=CY;
delay();
SCL=1;
delay();
}
SCL=0;
delay();
SDA=1;
delay();
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
//定義臨時變量K,K左移一位后與SDA進行或運算,
//依次把8個獨立地位放入一個字節中來接受完成
void Read_Byte()
{
uchari,k;
SCL=0;
delay();
SDA=1;
for(i=0;i<8;i++)
{
SCL=1;
delay();
k=(k<<1)|SDA;
SCL=0;
delay();
}
delay();
returnk;
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
底層驅動完成以后,我們需要對實際的芯片使用通訊協議來進行操作。
目前大多的情況下一般比較受歡迎的是AT24cxx 系列。
AT24Cxx系列主要有: 以下系列:
以下僅以AT24C02為例來進行說明:
AT24C02芯片地址為:1010,其控制字格式如下:
其中A2,A1,A0為可編程選擇地址,此處A2,A1,A0均接地,即000,
因此發送寫信號的尋址字節為:10100000,即0XA0,
因此發送讀信號的尋址字節為:10100001,即0XA1,
下圖為寫一個字節的數據格式,有圖可知道:向AT24C02中寫入一個字節的時候,需要:
先發一個起始信號,再發一個字節的控制字,
在發送一個字節的控制字地址,都得到應答信號后,
再發送要存入的數據,最后發一個停止信號!
So,一個字節的數據已經寫入AT24C02中,OK!下面是數據格式,如圖:
程序如下:
-----------------------------------------------------------------------------------------------------------------------
//任意地址,寫入數據
void Write_Add(uchar address,uchar date)
{
Start();
Write_Byte(0xA0);
Respons();
Write_Byte(address);
Respons();
Write_Byte(date);
Respons();
Stop
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
下圖為讀一個字節的數據格式,其讀取一個字節的數據和寫入時候差不多,此處不再累贅,讀一字節數據格式如圖:
程序如下:
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
//任意地址,讀出數據
void Read_Add(uchar address)
{
uchardate;
Start();
Write_Byte(0XA0);
Respons();
Write_Byte(address);
Respons();
Start();
Write_Byte(0XA1);
Respons();
date=Read_Byte();
Stop();
returnbyte;
}
-----------------------------------------------------------------------------------------------------------------------
上一篇:基于89c52的簡易計算器設計
下一篇:基于NRF24L01的DS18B20溫度無線傳輸單片機源碼
推薦閱讀
史海拾趣
隨著全球化進程的加速和國際貿易的不斷發展,Hendon Semiconductors積極實施全球化戰略,不斷拓展國際市場。公司加強與國際客戶的合作與交流,了解他們的需求和期望,并根據市場變化調整產品結構和市場策略。同時,Hendon Semiconductors還積極參與國際展會和技術交流活動,展示其最新的技術和產品成果,提升品牌知名度和影響力。通過一系列有效的市場拓展措施和全球化戰略的實施,Hendon Semiconductors在國際市場上取得了顯著的成績和突破。
在環保意識日益增強的今天,D3公司積極響應國家號召,將綠色環保理念融入企業的生產經營中。公司采用環保材料和清潔能源進行生產,減少了對環境的污染。同時,公司還加強了對廢棄物的處理和回收利用,實現了資源的循環利用。這種綠色環保的生產方式,不僅降低了企業的生產成本,也提高了企業的社會責任感。在消費者的心中,D3公司也因此樹立了環保、負責的良好形象。
在20世紀60年代,人類開始了對月球的探索。Cicoil公司的柔性扁平電纜被選為阿波羅任務的關鍵組件之一。這些電纜為宇航員在月球上的活動提供了安全可靠的電力和數據傳輸保障。當尼爾·阿姆斯特朗和巴茲·奧爾德林在月球上行走時,他們的每一步都離不開Cicoil電纜的支持。這一歷史性的時刻讓Cicoil公司名聲大噪,也進一步鞏固了其在電子行業中的地位。
Cicoil公司的創立可以追溯到電子行業的快速發展時期。創始人看到了扁平電纜在電子設備中的巨大潛力,于是決定專注于這一領域的研究和開發。他們投入大量資源,研發出具有獨特技術的柔性扁平電纜,為電子設備提供了更為靈活和可靠的連接方案。這一創新產品在市場上引起了轟動,為Cicoil公司贏得了良好的聲譽和市場份額。
為了保證產品質量的穩定性和可靠性,CalRamic Technologies在公司成立不久后,就開始著手建立嚴格的質量管理體系。他們引入了國際先進的質量管理理念和方法,對每一個生產環節進行嚴格把控。這一舉措大大提高了產品的合格率和客戶滿意度,為公司的長期發展奠定了堅實基礎。
Antenova公司在行業內率先推出了第二代GPS射頻天線模塊,這一創新產品為嵌入式GPS應用提供了高性能的解決方案。該產品的推出不僅樹立了行業標桿,還為公司帶來了可觀的收入增長。同時,Antenova還不斷推出其他領先產品,進一步鞏固了公司在天線設計領域的領先地位。
近年來,隨著網絡和多媒體技術的發展,視頻信息通信的重要性和需求急劇增長,而其中的關鍵就在于視頻壓縮編碼技術的應用。文獻[1]曾提出了一種基于TMS320DM642 DSP的視頻編碼方案,實現了H.264算法。同H.264相比,MPEG4具有軟硬件開發成本低和更容 ...… 查看全部問答∨ |
|
wince camera CameraTest 的問題,請各位做過的幫忙看看。。。 各位,我在開發攝像頭的Demo時,執行到下面的代碼時,f總是0,GetLastError()總是1。會是那個地方出問題?我只有客戶給的dll。沒有任何說明,經過再三要求給了一個WebCamSDK.h文件。請大家幫忙看看。 ...… 查看全部問答∨ |
|
我使用2440,wince4.2,應用程序也寫好了,功能正常,還帶有一個4×4的鍵盤(鍵盤也調試好了)。 現在是通過觸摸屏啟動應用程序,現在想實現以下功能: 通過鍵盤上一個按鈕啟動應用程序,最好是啟動后再按這個按鈕一下,就能關閉程序。 請各位大俠 ...… 查看全部問答∨ |
|
最近在看一段操作2410的UART的代碼,有一些疑問,請各位大俠指教。 void UART_SendStr(char const *str) { whlie(*str!=\'\\0\') { if(*str==\'\\n\') UART_Se ...… 查看全部問答∨ |
請問一下:STM32F10x的SPI怎樣接收LTC2440的32位的AD轉換結果 STM32F10x的SPI一幀數據為8位或16位,而LTC2440的A/D轉換器在一次片選后連續輸出32位結果,可以用硬件以DMA方式接 ...… 查看全部問答∨ |
正在用高速AD+cyclone III做數據采集,AD的輸出為LVDS Data7+/-,Data6+/-,...,Data1+/-,Data0+/-。在應用IP核時不知道如何設置參數,特別是What is the number of channels?和What is the deserialization factor?不知道是何意思,哪位前輩做過麻 ...… 查看全部問答∨ |
第一次發貼:MIFARE卡資料大放送,讀MIFARE卡芯片資料(有中文也有英文的) 這些都是我珍藏的資料,有些在網上很難找得到的。 今天要回家了,希望 RF/無線 的朋友都能夠回家過個好年……… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 高通攜手中國“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動艙駕創新升級
- 工業市場正在快速回暖,德州儀器如何重塑電力電子市場?
- 特斯拉:美國交付的Model Y/3電池包已實現100%美國生產
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產品
- 強化中國市場戰略布局,德州儀器正靈活應對全球關稅挑戰
- Molex莫仕通過本地合作和創新加強支持中國汽車行業
- 貿澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現車載充電器小型化!
- 用上車規級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術解析:聚焦高帶寬、多通道同步采集與協議分析