在线观看国产精品av-久久中文字幕人妻丝袜-国产偷窥熟女精品视频大全-日日碰狠狠添天天爽-中国女人做爰视频

STM32學(xué)習(xí)之I2C

發(fā)布時(shí)間:2019年4月9日

I2C總線是由NXP(原PHILIPS)公司設(shè)計(jì),有十分簡(jiǎn)潔的物理層定義,其特性如下:

  • 只要求兩條總線線路:一條串行數(shù)據(jù)線SDA,一條串行時(shí)鐘線SCL;
  • 每個(gè)連接到總線的器件都可以通過(guò)唯一的地址和一直存在的簡(jiǎn)單的主機(jī)/從機(jī)關(guān)系軟件設(shè)定地址,主機(jī)可以作為主機(jī)發(fā)送器或主機(jī)接收器;
  • 它是一個(gè)真正的多主機(jī)總線,如果兩個(gè)或更多主機(jī)同時(shí)初始化,數(shù)據(jù)傳輸可以通過(guò)沖突檢測(cè)和仲裁防止數(shù)據(jù)被破壞;
  • 串行的8 位雙向數(shù)據(jù)傳輸位速率在標(biāo)準(zhǔn)模式下可達(dá)100kbit/s,快速模式下可達(dá)400kbit/s,高速模式下可達(dá)3.4Mbit/s;
  • 連接到相同總線的IC 數(shù)量只受到總線的最大電容400pF 限制。

其典型的接口連線如下:

STM32學(xué)習(xí)之I2C

 

I2C的協(xié)議很簡(jiǎn)單:

 

數(shù)據(jù)的有效性

在傳輸數(shù)據(jù)的時(shí)候,SDA線必須在時(shí)鐘的高電平周期保持穩(wěn)定,SDA的高或低電平狀態(tài)只有在SCL 線的時(shí)鐘信號(hào)是低電平時(shí)才能改變 。

 

起始和停止條件

SCL 線是高電平時(shí),SDA 線從高電平向低電平切換,這個(gè)情況表示起始條件;

SCL 線是高電平時(shí),SDA 線由低電平向高電平切換,這個(gè)情況表示停止條件。

 

字節(jié)格式

發(fā)送到SDA 線上的每個(gè)字節(jié)必須為8 位,每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制。每個(gè)字節(jié)后必須處理一個(gè)響應(yīng)位。

 

應(yīng)答響應(yīng)

數(shù)據(jù)傳輸必須帶響應(yīng),相關(guān)的響應(yīng)時(shí)鐘脈沖由主機(jī)產(chǎn)生。在響應(yīng)的時(shí)鐘脈沖期間發(fā)送器釋放SDA 線(高)。

在響應(yīng)的時(shí)鐘脈沖期間,接收器必須將SDA 線拉低,使它在這個(gè)時(shí)鐘脈沖的高電平期間保持穩(wěn)定的低電平。

也就是說(shuō)主器件發(fā)送完一字節(jié)數(shù)據(jù)后要接收一個(gè)應(yīng)答位(低電平),從器件接收完一個(gè)字節(jié)后要發(fā)送一個(gè)低電平。

 

尋址方式(7位地址方式)

 

第一個(gè)字節(jié)的頭7 位組成了從機(jī)地址,最低位(LSB)是第8 位,它決定了傳輸?shù)??普通的和帶重復(fù)開始條件的7位地址格式方向。第一個(gè)字節(jié)的最低位是

“0”,表示主機(jī)會(huì)寫信息到被選中的從機(jī);

“1”表示主機(jī)會(huì)向從機(jī)讀信息。

當(dāng)發(fā)送了一個(gè)地址后,系統(tǒng)中的每個(gè)器件都在起始條件后將頭7 位與它自己的地址比較,如果一樣,器件會(huì)判定它被主機(jī)尋址,至于是從機(jī)接收器還是從機(jī)發(fā)送器,都由R/W 位決定。

 

仲裁

 

I2C是所主機(jī)總線,每個(gè)設(shè)備都可以成為主機(jī),但任一時(shí)刻只能有一個(gè)主機(jī)。

 

stm32至少有一個(gè)I2C接口,提供多主機(jī)功能,可以實(shí)現(xiàn)所有I2C總線的時(shí)序、協(xié)議、仲裁和定時(shí)功能,支持標(biāo)準(zhǔn)和快速傳輸兩種模式,同時(shí)與SMBus 2.0兼容。

 

 

本實(shí)驗(yàn)直接操作寄存器實(shí)現(xiàn)對(duì)I2C總線結(jié)構(gòu)的EEPROM AT24c02的寫入和讀取。AT24c02相關(guān)操作詳見?單片機(jī)讀取EEPROM(AT24C02)。

 

庫(kù)函數(shù)實(shí)現(xiàn)使用stm32的兩個(gè)I2C模擬I2C設(shè)備間的數(shù)據(jù)收發(fā),并通過(guò)串口查看數(shù)據(jù)交換情況。

 

直接操作寄存器

 

首先需要配置I2C接口的時(shí)鐘,相關(guān)寄存器如下:

 

I2C_CR2寄存器低五位:

FREQ[5:0]:I2C模塊時(shí)鐘頻率 ,必須設(shè)置正確的輸入時(shí)鐘頻率以產(chǎn)生正確的時(shí)序,允許的范圍在2~36MHz之間:

000000:禁用 ??? ? 000001:禁用 ? ? ? 000010:2MHz ??? ? … ??? ? 100100:36MHz ??? ? 大于100100:禁用。

 

用于設(shè)置I2C設(shè)備的輸入時(shí)鐘,本例使用的是PLCK1總線上的時(shí)鐘所以為36Mhz;

 

時(shí)鐘控制寄存器(I2C_CCR)低12位:

CCR[11:0]:快速/標(biāo)準(zhǔn)模式下的時(shí)鐘控制分頻系數(shù)(主模式),該分頻系數(shù)用于設(shè)置主模式下的SCL時(shí)鐘。

在I2C標(biāo)準(zhǔn)模式或SMBus模式下:

Thigh = CCR ×TPCLK1

Tlow = CCR ×TPCLK1

 

時(shí)鐘周期為 T = Thigh + Tlow;

 

例如:在標(biāo)準(zhǔn)模式下,F(xiàn)REQR = 36 即36Mhz,產(chǎn)生200kHz的SCL的頻率

 

時(shí)鐘控制分頻系數(shù) ?= Freqr /2/f ? ?f 為想得到的頻率

 

配置好時(shí)鐘,還需要配置本機(jī)地址,I2C支持7位地址和10位地址,這里用的是7位地址:

自身地址寄存器1(I2C_OAR1)[7:1]:接口地址,地址的7~1位

主站蜘蛛池模板: 国产999精品2卡3卡4卡| 色综合天天综合网国产成人网| 国产精品未满十八禁止观看 | 一区二区三区久久含羞草| 精品一区二区ww| 日韩中文字幕v亚洲中文字幕| 国产裸体xxxx视频| 老太脱裤让老头玩ⅹxxxx| 亚洲狠狠成人网| 久久国产精品人妻丝袜| 强奷漂亮人妻系列老师| 国产成人亚洲精品无码青青草原 | 亚洲粉嫩高潮的18p| 狠狠综合久久久久综合网| 羞羞午夜福利免费视频| 男人一边吃奶一边做爰免费视频| 国产成人精品97| 18禁止午夜福利体验区| 国产精品成人嫩草影院| 欧美日韩综合在线精品| 久久亚洲精品无码aⅴ大香| 国产午夜福利视频在线观看| 亚洲阿v天堂在线| 久久er99热精品一区二区| 99成人国产综合久久精品| 日本二区三区欧美亚洲国产| 午夜美女裸体福利视频| 国产极品视觉盛宴| 国产人妻人伦精品1国产| 免费看美女被靠到爽的视频 | 中国超帅年轻小鲜肉自慰| 久久久无码精品国产一区| 日韩人妻无码一区二区三区| 日韩欧美成人免费观看| 精品国产乱码久久久久久郑州公司| 日韩人妻无码精品一专区二区三区| 亚洲国产综合av在线观看| 午夜理伦三级理论三级| 色九月亚洲综合网| 无线日本视频精品| 男人边吃奶边揉好爽免费视频|