成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

I2C 協(xié)議 代碼詳解

BakerJ / 1471人閱讀

摘要:對應代碼為讀取口線狀態(tài)拉低總線發(fā)送信號根據(jù)上方時序圖可以知道在為高電平期間,發(fā)送數(shù)據(jù),發(fā)送次數(shù)據(jù),數(shù)據(jù)為被拉高,被拉低,數(shù)據(jù)為,被拉低。

I2C 協(xié)議

I2C 簡要介紹

I2C 總線(I2C bus,Inter-IC bus)是一個雙向的兩線連續(xù)總線,提供集成電路(ICs)之間的通信線路。I2C總線是一種串行擴展技 術,最早由 Philips 公司推出,廣泛應用于電視,錄像機和音頻等設備。I2C總線的意思:“完成集成電路或功能單元之間信息交換的規(guī)范或協(xié)議”。Philips公司推出的 I2C 總線采用一條數(shù)據(jù)線(SDA),加一條時鐘線(SCL)來完成數(shù)據(jù)的傳輸及外圍器件的擴展;對各個節(jié)點的尋址是軟尋址方式,節(jié)省了片選線,標準的尋址字節(jié) SLAM 為7位,可以尋址127個單元。

?

1. 延時信號

static void i2c_Delay(void){	uint8_t i;	for (i = 0; i < 10; i++);}

邏輯分析測試得出

? 條件: CPU 主頻 72MHZ ,MDK 編譯, 1級優(yōu)化

? 循環(huán)次數(shù) 10 ,SCL 頻率 = 205 KHZ

? 循環(huán)次數(shù) 7 ,SCL 頻率 = 347 KHZ, SCL 高電平時間 1.5us, SCL 低電平時間 2.87us

? 循環(huán)次數(shù) 5 ,SCL 頻率 = 421 KHZ ,SCL 高電平時間 1.25us, SCL 低電平時間 2.37us

?

2.起始信號

根據(jù)上方時序圖可以知道

? I2C 起始信號:當 SCL 高電平時,SDA 出現(xiàn)一個下跳沿表示 I2C 總線啟動信號

? 對應代碼為:

void i2c_Start(void){	OLED_I2C_SDA_1();			//SDA 總線置1	OLED_I2C_SCL_1();			//SCL 總線置1	i2c_Delay();				//延時信號	OLED_I2C_SDA_0();			//置 0 	i2c_Delay();	OLED_I2C_SCL_0();			//SCL 置0	i2c_Delay();}

?

3. 停止信號

根據(jù)上方時序圖可以知道

? I2C 結束信號:當 SCL 高電平時,SDA 出現(xiàn)一個上跳沿表示 I2C 總線停止信號

? 對應代碼為:

void i2c_Stop(void){	OLED_I2C_SDA_0();	OLED_I2C_SCL_1();	i2c_Delay();	OLED_I2C_SDA_1();}

?

4. 等待應答信號

根據(jù)上方時序圖可以知道

? I2C等待應答信號:當 SDA 高電平,SCL 也處在高電平,這時候 SDA 返回的數(shù)據(jù), 1 代表無器件應答,0 代表正確應答。

? 對應代碼為:

uint8_t i2c_WaitAck(void){	uint8_t re;	OLED_I2C_SDA_1();		i2c_Delay();	OLED_I2C_SCL_1();		i2c_Delay();	if (OLED_I2C_SDA_READ())	//讀取 SDA 口線狀態(tài)	{		re = 1;						}	else	{		re = 0;	}	OLED_I2C_SCL_0();			//拉低 SCL 總線	i2c_Delay();	return re;}

?

5. 發(fā)送信號

根據(jù)上方時序圖可以知道

? 在SCL為高電平期間,發(fā)送數(shù)據(jù),發(fā)送8次數(shù)據(jù),數(shù)據(jù)為1,SDA被拉高,SDA被拉低,數(shù)據(jù)為0,SDA被拉低。

void i2c_SendByte(uint8_t _ucByte){	uint8_t i; 							//先傳輸高位 bit7	for (i = 0; i < 8; i++)	{				if (_ucByte & 0x80)   			//判斷 高位		{			OLED_I2C_SDA_1();			//設置 SDA 傳輸數(shù)據(jù) 		}		else		{			OLED_I2C_SDA_0();					}		i2c_Delay();		OLED_I2C_SCL_1();				//拉高 SCL ,發(fā)送數(shù)據(jù)		i2c_Delay();			OLED_I2C_SCL_0();				//拉低 SCL ,改變 SDA 數(shù)據(jù),左移 _ucByte ,再次判斷 高位 bit6 等等		if (i == 7)		{			 OLED_I2C_SDA_1(); 			//退出傳輸, SDA 置 1		}		_ucByte <<= 1;			i2c_Delay();	}}

?

6. 讀取信號

uint8_t i2c_ReadByte(void){	uint8_t i;	uint8_t value;	value = 0;          	for (i = 0; i < 8; i++)	{		value <<= 1;					//左移 1 位		OLED_I2C_SCL_1();				// SCL 置 1 		i2c_Delay();		if (OLED_I2C_SDA_READ())		//讀取 SDA 口數(shù)據(jù)		{			value++;                    //每次都左移一位,value++,就等于 |          		}		OLED_I2C_SCL_0();				//SCL 置 0 ,改變 SDA 數(shù)據(jù)		i2c_Delay();	}	return value;						//返回讀取到的數(shù)據(jù)}

SCL 置 1,SDA數(shù)據(jù)穩(wěn)定,SCL 置 0,可以改變 SDA數(shù)據(jù)

?

最后

?第一次嘗試編寫博客,若是有什么建議,歡迎批評指出。

?后續(xù)會逐步分塊更新,并會在最后一篇文章上傳源代碼。

?若是該文章對你有作用或是覺得文章寫得還行,幫忙點點贊,三連!

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/121622.html

相關文章

  • stm32通過I2C接口實現(xiàn)溫濕度(AHT20)的采集

    摘要:如圖所示在了解起始條件和停止條件后,我們再來看看在這個過程中數(shù)據(jù)的傳輸是如何進行的。四參考資料通過接口實現(xiàn)溫濕度的采集硬件和軟件區(qū)別 stm32通過I2C接口實現(xiàn)...

    chengtao1633 評論0 收藏0
  • OLED 顯示模塊程序詳解

    摘要:顯示模塊如果還沒有看過協(xié)議的,請移步先看下面這篇文章協(xié)議好的,現(xiàn)在我們進入正題向寄存器地址寫入一個的數(shù)據(jù)開啟發(fā)送設備地址讀寫控制,采用宏定義方式一般地址為,不行就嘗試下傳入?yún)?shù),為寄存器參數(shù),根據(jù)手冊,寫入命令寄 ...

    Wildcard 評論0 收藏0
  • 串口I2C通信詳解介紹(小白初學,淺顯易懂,基本知識)

    摘要:每個字節(jié)后必須跟一個響應位。低速率一般是同一個板子上的兩個芯片間通信,數(shù)據(jù)量不大,速率低。速率幾百,速率可能不同,不能超過的最高速率。 介紹:I2C通訊協(xié)議(Inter-Integrated Circuit)引腳少,硬件實現(xiàn)簡單,可擴展性強,不需要USART、CAN等通訊協(xié)議的外部收發(fā)設備,...

    wua_wua2012 評論0 收藏0
  • IIC協(xié)議詳解,附單片機軟件模擬源碼

    摘要:協(xié)議物理層原理總體特征協(xié)議層起始和停止條件數(shù)據(jù)有效性響應應答尋址讀數(shù)據(jù)寫數(shù)據(jù)單片機通訊軟件模擬硬件外設一物理層原理總線,分別由串行數(shù)據(jù)線和串行時鐘線及上拉電阻組成。第八步,主機發(fā)送一個校驗碼,此校驗值為步數(shù)據(jù)產(chǎn)生的校驗碼。 ...

    CrazyCodes 評論0 收藏0
  • FPAG學習筆記——I2C接口實現(xiàn)

    摘要:總線空閑和均為高電平協(xié)議起始位為高電平時,出現(xiàn)下降沿協(xié)議終止位為高電平時,出現(xiàn)上升沿。主設備產(chǎn)生所有時鐘脈沖,包括確認位第九個時鐘脈沖。當在第個時鐘脈沖期間保持高時,這被定義為非應答信號。 ...

    DevTalking 評論0 收藏0

發(fā)表評論

0條評論

BakerJ

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<