在线观看国产精品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位

主站蜘蛛池模板: 又粗又猛又爽黄老大爷视频 | 久久精品麻豆日日躁夜夜躁妓女 | 国产成年无码v片在线| 日本无卡无吗二区三区入口| 亚洲日本中文字幕乱码在线电影| 人人澡 人人澡 人人看| 精品国产福利拍拍拍| 欧美又大又色又爽aaaa片| 国产小视频在线观看网站| 亚洲中国久久精品无码| 香蕉久久夜色精品升级完成| 无码人妻精品专区在线视频 | 国内精品视这里只有精品| 欧美亚洲综合久久偷偷人人| 99久久无码一区人妻| 国产精品无码永久免费不卡| 福利视频在线播放| 日本一卡二卡四卡无卡乱码视频免费| 国产午夜男女爽爽爽爽爽| 五月丁香国产在线视频| 亚洲精品国产综合久久久久紧| 国产麻豆 9l 精品三级站| 乱人伦视频中文字幕| 四虎影视永久在线精品| 高清无码爆乳潮喷在线观看| 国产av一区二区三区传媒| 久久久久无码精品国产app| 3d无码纯肉动漫在线观看| 亚洲人成网站在线播放2020| 日韩国产成人无码av毛片蜜柚 | 国产免费极品av吧在线观看| 午夜理伦三级理论三级| 国产久热精品无码激情| 国产成人av在线免播放观看| 国产情侣2020免费视频| 后入内射欧美99二区视频| 中文字幕亚洲综合小综合在线| 亚洲精品无码午夜福利理论片| 一本色道久久综合狠狠躁篇| 成人区人妻精品一区二区不卡视频| 高潮抽搐潮喷毛片在线播放|