在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AT32F435/437 I2C使用指南

0739hhbb ? 來源:AT32 MCU 雅特力科技 ? 2023-01-03 15:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

I2C接口簡介

I2C接口是由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成,在標(biāo)準(zhǔn)模式下通信速度可達(dá)到100kHz,快速模式下則可以達(dá)到400kHz,增強(qiáng)快速模式可達(dá)到1MHz。一幀數(shù)據(jù)傳輸從開始信號(hào)開始,在結(jié)束信號(hào)后停止,在收到開始信號(hào)后總線被認(rèn)為是繁忙的,當(dāng)收到結(jié)束信號(hào)后,總線被認(rèn)為再次空閑。I2C接口具有主機(jī)和從機(jī)模式、多主機(jī)功能、可編程建立和保持時(shí)間、時(shí)鐘延展功能、DMA存取數(shù)據(jù)、支持SMBus 2.0協(xié)議等特點(diǎn)。

圖1. I2C框圖

a4c28ede-881d-11ed-bfe3-dac502259ad0.png

I2C接口通信

主機(jī)通信流程

主機(jī)通信初始化


1. 主機(jī)時(shí)鐘初始化 在啟動(dòng)外設(shè)(I2CEN)之前,必須先設(shè)置I2Cx_CLKCTRL寄存器的各個(gè)位用以配置I2C主時(shí)鐘。 ― DIV[7:0]:I2C時(shí)鐘分頻 ― SDAD[3:0]:數(shù)據(jù)保持時(shí)間(tHD;DAT) ― SCLD[3:0]:數(shù)據(jù)建立時(shí)間(tSU;DAT) ― SCLH[7:0]:SCL高電平時(shí)間 ― SCLL[7:0]:SCL低電平時(shí)間 該寄存器的配置可以使用Artery_I2C_Timing_Configuration時(shí)鐘配置工具計(jì)算,見第三章節(jié)。 低電平控制:當(dāng)檢測到SCL總線為低電平時(shí),內(nèi)部SCLL計(jì)數(shù)器開始計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)到SCLL值時(shí),釋放SCL線,SCL線變?yōu)楦唠娖健?高電平控制:當(dāng)檢測到SCL總線為高電平時(shí),內(nèi)部SCLH計(jì)數(shù)器開始計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)到SCLH值時(shí),拉低SCL線,SCL線變?yōu)榈碗娖剑?dāng)在高電平期間,如果被外部總線拉低,那么內(nèi)部SCLH計(jì)數(shù)器停止計(jì)數(shù),并開始低電平計(jì)數(shù),這為時(shí)鐘同步提供了條件。

圖2. 主機(jī)時(shí)鐘的產(chǎn)生

a4eae7bc-881d-11ed-bfe3-dac502259ad0.png

2. 主機(jī)通信初始化

在啟動(dòng)通訊前須先設(shè)定I2C_CTRL2寄存器中的幾項(xiàng)參數(shù): 1) 設(shè)置傳輸字節(jié)數(shù) ― ≤255字節(jié)

配置I2C_CTRL2的RLDEN=0,關(guān)閉重載模式

配置I2C_CTRL2的CNT[7:0]=N

― >255字節(jié)

配置I2C_CTRL2的RLDEN=1,使能重載模式

配置I2C_CTRL2的CNT[7:0]=255

剩余傳輸字節(jié)數(shù)N=N-255

2) 設(shè)置傳輸結(jié)束模式 ― ASTOPEN=0:軟件結(jié)束模式,當(dāng)數(shù)據(jù)傳輸完成后,I2C_STS的TDC標(biāo)志置1,軟件設(shè)置GENSTOP=1或者GENSTART=1,發(fā)送STOP條件或者START條件。 ― ASTOPEN=1:自動(dòng)結(jié)束模式,當(dāng)數(shù)據(jù)傳輸完成后,自動(dòng)發(fā)送STOP條件。 3) 設(shè)置從機(jī)地址 ― 設(shè)置尋址的從機(jī)地址值(I2C_CTRL2的SADDR) ― 設(shè)置從機(jī)地址模式(I2C_CTRL2的ADDR10)

ADDR10=0:7位地址模式

ADDR10=1:10位地址模式

4) 設(shè)置傳輸方向(I2C_CTRL2的DIR) ― DIR=0:主機(jī)接收數(shù)據(jù) ― DIR=1:主機(jī)發(fā)送數(shù)據(jù) 5) 開始傳輸 設(shè)置I2C_CTRL2的GENSTART=1,主機(jī)開始在總線上發(fā)送START條件和從機(jī)地址。

3. 主機(jī)10 bits尋址的特殊時(shí)序初始化

在10位地址傳輸模式下,I2C_CTRL2的READH10用于產(chǎn)生特殊時(shí)序,當(dāng)READH10=1時(shí),支持如下傳輸序:主機(jī)先發(fā)送數(shù)據(jù)給從機(jī),然后再從從機(jī)讀取數(shù)據(jù),傳輸時(shí)序圖如下圖所示:

圖3. 10位地址的讀訪問READH10=1

a50dd420-881d-11ed-bfe3-dac502259ad0.png


主機(jī)在軟件結(jié)束模式(ASTOPEN=0)下,發(fā)送數(shù)據(jù)到從機(jī),當(dāng)數(shù)據(jù)發(fā)送完成后設(shè)置READH10=1,然后再從從機(jī)接收數(shù)據(jù)。

圖4. 10位地址的讀訪問READH10=0

a52f648c-881d-11ed-bfe3-dac502259ad0.png ? ?
主機(jī)通信初始化軟件接口

主機(jī)通信初始化所用到的軟件接口通過獨(dú)立的函數(shù)接口實(shí)現(xiàn),如下:
a557983a-881d-11ed-bfe3-dac502259ad0.png
i2c_init函數(shù)三個(gè)參數(shù)分別為:所使用的I2C、數(shù)字濾波值和主機(jī)時(shí)鐘配置值。 i2c_transmit_set函數(shù)用于初始化通信參數(shù),包括:所使用的I2C、從機(jī)地址、傳輸字節(jié)數(shù)、停止條件產(chǎn)生模式和起始條件產(chǎn)生模式。 i2c_addr10_mode_enable函數(shù)用于使能10位地址模式。 i2c_addr10_header_enable函數(shù)用于使能10位地址頭讀取時(shí)序,即主機(jī)發(fā)送完整的10位從機(jī)地址讀序列或主機(jī)只發(fā)送10位地址的前7位。

主機(jī)發(fā)送流程

1) I2C_TXDT數(shù)據(jù)寄存器為空,I2C_STS的TDIS=1; 2) 向TXDT數(shù)據(jù)寄存器寫入數(shù)據(jù),數(shù)據(jù)開始發(fā)送; 3) 重復(fù)1、2步驟直到發(fā)送CNT[7:0]個(gè)數(shù)據(jù); 4) 如果此時(shí)I2C_STS的TCRLD=1(重載模式),分為以下兩種情況: ― 剩余字節(jié)數(shù)N>255:向CNT寫入255,N=N-255,TCRLD被自動(dòng)清0,傳輸繼續(xù); ― 剩余字節(jié)數(shù)N≤255:關(guān)閉重載模式(RLDEN=0),向CNT寫入N,TCRLD被自動(dòng)清0,傳輸繼續(xù)。 5) 結(jié)束時(shí)序 ― 停止條件產(chǎn)生:

軟件結(jié)束模式(ASTOPEN=0):此時(shí)I2C_STS的TDC置1,設(shè)置GENSTOP=1產(chǎn)生STOP條件;

自動(dòng)結(jié)束模式(ASTOPEN=1):自動(dòng)產(chǎn)生STOP條件。

― 等待產(chǎn)生STOP條件,當(dāng)STOP條件產(chǎn)生時(shí),I2C_STS的STOPF置1,將I2C_CLR的STOPC寫1,清除STOPF標(biāo)志,傳輸結(jié)束。
圖5. I2C主機(jī)發(fā)送流程圖
a5868186-881d-11ed-bfe3-dac502259ad0.png
圖6. I2C主機(jī)發(fā)送時(shí)序圖

a5b6b072-881d-11ed-bfe3-dac502259ad0.png ? ?
主機(jī)發(fā)送流程軟件接口

主機(jī)發(fā)送通過獨(dú)立的函數(shù)接口實(shí)現(xiàn),如下:

a6288814-881d-11ed-bfe3-dac502259ad0.png

i2c_master_transmit函數(shù)為i2c_application.c文件所提供的應(yīng)用層接口函數(shù),參數(shù)包括:I2C結(jié)構(gòu)體指針、從機(jī)地址、發(fā)送數(shù)據(jù)指針、發(fā)送數(shù)據(jù)字節(jié)數(shù)和函數(shù)超時(shí)時(shí)間。 注:此函數(shù)為Artery所提供的標(biāo)準(zhǔn)主機(jī)發(fā)送函數(shù)。用戶也可根據(jù)前述主機(jī)發(fā)送流程,自行編寫主機(jī)發(fā)送函數(shù)。

主機(jī)接收流程

1) 當(dāng)收到數(shù)據(jù)后,RDBF=1,讀取RXDT數(shù)據(jù)寄存器,RDBF被自動(dòng)清零; 2) 重復(fù)步驟2直到接收CNT[7:0]個(gè)數(shù)據(jù); 3) 如果此時(shí)I2C_STS的TCRLD=1(重載模式),分為以下兩種情況: ― 剩余字節(jié)數(shù)N>255:向CNT寫入255,N=N-255,TCRLD被自動(dòng)清0,傳輸繼續(xù); ― 剩余字節(jié)數(shù)N≤255:關(guān)閉重載模式(RLDEN=0),向CNT寫入N,TCRLD被自動(dòng)清0,傳輸繼續(xù)。 4) 當(dāng)在接收到最后一個(gè)字節(jié)時(shí),主機(jī)會(huì)自動(dòng)發(fā)送一個(gè)NACK。 5) 結(jié)束時(shí)序 ― 停止條件產(chǎn)生:

軟件結(jié)束模式(ASTOPEN=0):此時(shí)I2C_STS的TDC置1,設(shè)置GENSTOP=1產(chǎn)生STOP條件;

自動(dòng)結(jié)束模式(ASTOPEN=1):自動(dòng)產(chǎn)生STOP條件。

― 等待產(chǎn)生STOP條件,當(dāng)STOP條件產(chǎn)生時(shí),I2C_STS的STOPF置1,將I2C_CLR的STOPC寫1,清除STOPF標(biāo)志,傳輸結(jié)束。
圖7. I2C主機(jī)接收流程圖

a642e146-881d-11ed-bfe3-dac502259ad0.png
圖8. I2C主機(jī)接收時(shí)序圖
a6732cb6-881d-11ed-bfe3-dac502259ad0.png ? ?

主機(jī)接收流程軟件接口

主機(jī)接收通過獨(dú)立的函數(shù)接口實(shí)現(xiàn),如下:

a68a797a-881d-11ed-bfe3-dac502259ad0.png

i2c_master_receive函數(shù)為i2c_application.c文件所提供的應(yīng)用層接口函數(shù),參數(shù)包括:I2C結(jié)構(gòu)體指針、從機(jī)地址、接收數(shù)據(jù)指針、接收數(shù)據(jù)字節(jié)數(shù)和函數(shù)超時(shí)時(shí)間。 注:此函數(shù)為Artery所提供的標(biāo)準(zhǔn)主機(jī)接收函數(shù)。用戶也可根據(jù)前述主機(jī)接收流程,自行編寫主機(jī)接收函數(shù)。

從機(jī)通信流程

從機(jī)通信初始化

1. 從機(jī)地址配置 每個(gè)I2C從設(shè)備可同時(shí)支持2個(gè)從設(shè)備地址,由OADDR1和OADDR2指定 I2C_OADDR1 — 通過ADDR1EN使能 — 通過ADDR1MODE配置為7位(默認(rèn))或10位地址 I2C_OADDR2 — 通過ADDR2EN使能 — 固定7位地址模式 — 可通過ADDR2MASK[2:0]來在進(jìn)行地址匹配比較時(shí)屏蔽掉0~7個(gè)LSB地址位

ADDR2MASK=0表示7位地址中的每一位都要參與匹配比較

ADDR2MASK=7表示任何非保留地址的7位地址都會(huì)被該從設(shè)備應(yīng)答

2. 從機(jī)地址匹配

當(dāng)I2C啟用的地址選中匹配時(shí),ADDRF中斷狀態(tài)標(biāo)志會(huì)被置1,如果ADDRIEN位為1,就會(huì)產(chǎn)生一個(gè)中斷。如果兩個(gè)從地址都使能,在地址匹配產(chǎn)生ADDR中斷時(shí),可以查看狀態(tài)寄存器中的ADDR[6:0]來得知是OADDR1還是OADDR2被尋址了。

3. 從機(jī)字節(jié)控制模式(通常SMBus模式下才使用)

從設(shè)備可以對每個(gè)收到的字節(jié)進(jìn)行應(yīng)答控制。 所需配置:SCTRL=1&RLDEN=1&STRETCH=0&CNT≥1 從機(jī)字節(jié)控制流程: 1) 每收到一個(gè)字節(jié)TCRLD置位,時(shí)鐘延展于第8和第9個(gè)脈沖之間 2) 軟件讀取RXDT中的值,并決定是否置位ACK 3) 軟件重裝載CNT=1來停止時(shí)鐘延展 4) 應(yīng)答或非應(yīng)答信號(hào)在第9個(gè)脈沖時(shí)刻出現(xiàn)在總線上 注意: 置位SCTRL時(shí),必須開啟時(shí)鐘延展,即STRETCH=0 CNT可以是大于1的值,來實(shí)現(xiàn)多個(gè)字節(jié)以自動(dòng)ACK接收完畢后再啟動(dòng)應(yīng)答控制,從設(shè)備發(fā)送時(shí)推薦關(guān)閉SCTRL,此時(shí)無需字節(jié)應(yīng)答控制。

從機(jī)通信初始化軟件接口

從機(jī)通信初始化所用到的軟件接口通過獨(dú)立的函數(shù)接口實(shí)現(xiàn),如下:

a6a4737a-881d-11ed-bfe3-dac502259ad0.png

i2c_own_address1_set函數(shù)用于配置OADDR1地址模式以及ADDR1地址值。 i2c_own_address2_set函數(shù)用于配置ADDR2地址值以及ADDR2屏蔽位。 i2c_own_address2_enable函數(shù)用于使能ADDR2地址。 i2c_slave_data_ctrl_enable函數(shù)用于使能從機(jī)字節(jié)控制模式。 i2c_clock_stretch_enable函數(shù)用于使能從機(jī)時(shí)鐘延展功能。 i2c_reload_enable函數(shù)用于使能發(fā)送數(shù)據(jù)重載模式。

從機(jī)發(fā)送流程

1) 響應(yīng)主機(jī)地址,匹配時(shí)回復(fù)ACK; 2) TXDT為空時(shí),置位TDIS,從設(shè)備寫入發(fā)送數(shù)據(jù); 3) 每發(fā)送一個(gè)字節(jié)會(huì)收到ACK,且置位TDIS; 4) 如果收到NACK位:

— 置位NACKF,產(chǎn)生中斷;

— 從設(shè)備自動(dòng)釋放SCL和SDA(以便主設(shè)備發(fā)送STOP或RESTART);

5) 如果收到STOP位:

— 置位STOPF,產(chǎn)生中斷;

當(dāng)從機(jī)發(fā)送開啟時(shí)鐘延展(STRETCH=0)時(shí),在等待ADDRF標(biāo)志時(shí)和發(fā)送前一個(gè)數(shù)據(jù)的第9個(gè)時(shí)鐘脈沖后,會(huì)把TXDT中的數(shù)據(jù)拷貝到移位寄存器中,如果此時(shí)TDIS還是置位,表示TXDT沒有寫進(jìn)待發(fā)送數(shù)據(jù),將發(fā)生時(shí)鐘延展,如下流程圖:

圖9. I2C從機(jī)發(fā)送流程圖

a6c24e36-881d-11ed-bfe3-dac502259ad0.png


需要注意的是,在時(shí)鐘延展關(guān)閉(STRETCH=1)的情況下,如果在將要傳輸數(shù)據(jù)的第一個(gè)Bit位開始發(fā)送之前,也就是SDA邊沿產(chǎn)生之前,如果數(shù)據(jù)還未寫入TXDT數(shù)據(jù)寄存器,那么會(huì)發(fā)生欠載錯(cuò)誤,此時(shí)I2C_STS的OUF將會(huì)置1,并將0xFF發(fā)送到總線。 為了能及時(shí)的寫入數(shù)據(jù),可以在通信開始前,先將數(shù)據(jù)寫入到DT寄存器:軟件先將TDBE置1,目的是為了清空TXDT寄存器的數(shù)據(jù),然后將第一個(gè)數(shù)據(jù)寫入TXDT寄存器,此時(shí)TDBE清零。


圖10. I2C從機(jī)發(fā)送時(shí)序圖

a6fb355c-881d-11ed-bfe3-dac502259ad0.png ?


從機(jī)發(fā)送流程軟件接口

從機(jī)發(fā)送通過獨(dú)立的函數(shù)接口實(shí)現(xiàn),如下:


a71a73b8-881d-11ed-bfe3-dac502259ad0.png


指針、發(fā)送數(shù)據(jù)指針、發(fā)送數(shù)據(jù)字節(jié)數(shù)和函數(shù)超時(shí)時(shí)間。 注:此函數(shù)為Artery所提供的標(biāo)準(zhǔn)從機(jī)發(fā)送函數(shù)。用戶也可根據(jù)前述從機(jī)發(fā)送流程,自行編寫從機(jī)發(fā)送函數(shù)。

從機(jī)接收流程


1) 當(dāng)收到數(shù)據(jù)后,RDBF=1,讀取RXDT數(shù)據(jù)寄存器,RDBF被自動(dòng)清零; 2) 重復(fù)步驟2直到所有數(shù)據(jù)接收完成; 3) 等待收到STOP條件,當(dāng)收到STOP條件時(shí),I2C_STS的STOPF置1,將I2C_CLR 的STOPC寫1,清除STOPF標(biāo)志,傳輸結(jié)束。


圖11. I2C從機(jī)接收流程圖


a732bde2-881d-11ed-bfe3-dac502259ad0.png


圖12. I2C從機(jī)接收時(shí)序圖

a75b4de8-881d-11ed-bfe3-dac502259ad0.png ? ?

從機(jī)接收流程軟件接口

從機(jī)接收通過獨(dú)立的函數(shù)接口實(shí)現(xiàn),如下:

a786146a-881d-11ed-bfe3-dac502259ad0.png


i2c_slave_receive函數(shù)為i2c_application.c文件所提供的應(yīng)用層接口函數(shù),參數(shù)包括:I2C結(jié)構(gòu)體指針、接收數(shù)據(jù)指針、接收數(shù)據(jù)字節(jié)數(shù)和函數(shù)超時(shí)時(shí)間。 注:此函數(shù)為Artery所提供的標(biāo)準(zhǔn)從機(jī)接收函數(shù)。用戶也可根據(jù)前述從機(jī)接收流程,自行編寫從機(jī)接收函數(shù)。

I2C配置工具

功能簡介

I2C配置工具Artery_I2C_Timing_Configuration.exe可以實(shí)現(xiàn)對主機(jī)和從機(jī)的時(shí)鐘、數(shù)字濾波、模擬濾波配置。

資源準(zhǔn)備

1) 軟件環(huán)境Artery_I2C_Timing_Configuration.exe 圖13. Artery I2C Timing Configuration

a79f4372-881d-11ed-bfe3-dac502259ad0.png ? ?

使用步驟

1) 選擇芯片型號(hào) 選擇當(dāng)前使用的芯片型號(hào),例如可以選擇AT32F435、AT32F437。 2) 選擇設(shè)備模式

Master:主模式,I2C作為主機(jī);

Slave:從模式,I2C作為從機(jī)。

3) 選擇I2C速度模式

Standard-mode:標(biāo)準(zhǔn)模式,范圍0~100kHz;

Fast-mode:快速模式,范圍0~400kHz;

Fast-modePlus:增強(qiáng)快速模式,范圍0~1000kHz。

4) 設(shè)置I2C速度(單位kHz) 根據(jù)實(shí)際需求設(shè)置I2C通信速度,例如需要通信速度為10kHz,那么這里設(shè)置為10。 5) 設(shè)置I2C時(shí)鐘源頻率(單位kHz) 根據(jù)實(shí)際使用的I2C時(shí)鐘源頻率來配置,例如AT32435 I2C時(shí)鐘源為PCLK1,當(dāng)AT32435主頻為288MHz,APB1為144MHz時(shí),這里設(shè)置為144000。 6) 模擬濾波使能

On:打開;

Off:關(guān)閉。

模擬濾波使能后,將過濾50ns以下的脈沖。 7) 數(shù)字濾波(范圍0~15) 數(shù)字濾波時(shí)間=數(shù)字濾波值x TI2C_CLK; 其中TI2C_CLK=1/I2C時(shí)鐘源頻率。 當(dāng)值為0時(shí),數(shù)字濾波關(guān)閉,當(dāng)值>0時(shí)將過濾小于數(shù)字濾波時(shí)間的脈沖。 8) 上升時(shí)間(tr單位ns) SCL和SDA總線的上升沿,如圖18所示。I2C協(xié)議中規(guī)定了在標(biāo)準(zhǔn)模式(Standard-mode)、快速模式(Fast-mode)、增強(qiáng)快速模式(Fast-mode Plus)下的范圍,詳情請參照表1。上升時(shí)間和上拉電阻的阻值關(guān)系很大,上拉電阻越小,上升時(shí)間越短,可以支持的通信速度就越快,但是功耗也越高。 表2中給出了一些常用上拉電阻阻值所對應(yīng)的上升沿時(shí)間,實(shí)際可能會(huì)因?yàn)榭偩€掛的設(shè)備數(shù)量、布線等差異而有所不同,僅供參考。 9) 下降時(shí)間(tf單位ns) SCL和SDA總線的下降沿,如圖18所示。I2C協(xié)議中規(guī)定了在標(biāo)準(zhǔn)模式(Standard-mode)、快速模式(Fast-mode)、增強(qiáng)快速模式(Fast-mode Plus)下的范圍,詳情請參照表1。 圖14.上升沿(tr)下降沿(tf)規(guī)范 a7cde150-881d-11ed-bfe3-dac502259ad0.png 表1. I2C時(shí)間規(guī)范 a7ef5c5e-881d-11ed-bfe3-dac502259ad0.png 表2. 常用上拉電阻阻值的tr、tf參考值(VDD=3.3V) a80eb5b8-881d-11ed-bfe3-dac502259ad0.png 注:該值是總線上連接兩片AT32 MCU,一個(gè)作為主機(jī),一個(gè)作為從機(jī)測試出來的值,實(shí)際可能會(huì)因?yàn)榭偩€掛的設(shè)備數(shù)量、布線等差異而有所不同。 10) 產(chǎn)生代碼 點(diǎn)擊產(chǎn)生代碼,上訴配置的值,將會(huì)以代碼的形式產(chǎn)生出來,如下圖紅框所示,只需要將右側(cè)輸出的代碼替換到自己的程序即可。 圖15.?代碼產(chǎn)生 a826a4d4-881d-11ed-bfe3-dac502259ad0.png ? ?

案例 讀寫EEPROM

功能簡介

使用硬件I2C接口對EEPROM存儲(chǔ)設(shè)備進(jìn)行讀寫訪問。

資源準(zhǔn)備

1) 硬件環(huán)境 對應(yīng)產(chǎn)品型號(hào)的AT-START BOARD 4.7K上拉電阻 EEPROM存儲(chǔ)設(shè)備 2) 軟件環(huán)境 projectat_start_f4xxexamplesi2ceeprom

軟件設(shè)計(jì)

1) 配置流程

開啟I2C外設(shè)時(shí)鐘

配置I2C所復(fù)用的GPIO

配置I2C所用的DMA通道

使能I2C外設(shè)接口

寫入EEPROM并讀取寫入的數(shù)據(jù)

比較讀寫數(shù)據(jù)內(nèi)容是否正確

2)代碼介紹

main函數(shù)代碼描述

a84e8c7e-881d-11ed-bfe3-dac502259ad0.png ? ?

實(shí)驗(yàn)效果

如若讀寫數(shù)據(jù)完全相同,則LED3會(huì)被點(diǎn)亮。

案例 輪詢方式通信

功能簡介

通過輪詢方式讓兩塊AT-START BOARD的I2C接口進(jìn)行通信,測試作為主機(jī)或從機(jī)發(fā)送和接收數(shù)據(jù)。

資源準(zhǔn)備

1) 硬件環(huán)境 對應(yīng)產(chǎn)品型號(hào)的AT-START BOARD兩塊 4.7K上拉電阻 2) 軟件環(huán)境 projectat_start_f4xxexamplesi2ccommunication_poll

軟件設(shè)計(jì)

1) 配置流程

開啟I2C外設(shè)時(shí)鐘

配置I2C所復(fù)用的GPIO

使能I2C外設(shè)接口

從機(jī)準(zhǔn)備接收數(shù)據(jù)

主機(jī)發(fā)送數(shù)據(jù)

從機(jī)準(zhǔn)備發(fā)送數(shù)據(jù)

主機(jī)接收數(shù)據(jù)

主機(jī)從機(jī)對比發(fā)送和接收到的數(shù)據(jù)是否正確

2) 代碼介紹

main函數(shù)代碼描述

a87693c2-881d-11ed-bfe3-dac502259ad0.png ? ?

實(shí)驗(yàn)效果

通過宏定義:#define MASTER_BOARD來選擇兩塊板子的主從關(guān)系;

如若主機(jī)或從機(jī)的讀寫數(shù)據(jù)完全相同,則LED3會(huì)被點(diǎn)亮,否則LED2會(huì)不停閃爍。

案例 中斷方式通信

功能簡介

通過中斷方式讓兩塊AT-START BOARD的I2C接口進(jìn)行通信,測試作為主機(jī)或從機(jī)發(fā)送和接收數(shù)據(jù)。

資源準(zhǔn)備

3) 硬件環(huán)境對應(yīng)產(chǎn)品型號(hào)的AT-START BOARD兩塊 4.7K上拉電阻 4) 軟件環(huán)境 projectat_start_f4xxexamplesi2ccommunication_int

軟件設(shè)計(jì)

3) 配置流程

開啟I2C外設(shè)時(shí)鐘

配置I2C所復(fù)用的GPIO

使能I2C外設(shè)接口

使能I2C中斷

從機(jī)準(zhǔn)備接收數(shù)據(jù)

主機(jī)發(fā)送數(shù)據(jù)

從機(jī)準(zhǔn)備發(fā)送數(shù)據(jù)

主機(jī)接收數(shù)據(jù)

主機(jī)從機(jī)對比發(fā)送和接收到的數(shù)據(jù)是否正確

4) 代碼介紹

main函數(shù)代碼描述

a8a9e150-881d-11ed-bfe3-dac502259ad0.png

主機(jī)中斷處理函數(shù)代碼描述

a8f90186-881d-11ed-bfe3-dac502259ad0.png

從機(jī)中斷處理函數(shù)代碼描述

a929a6f6-881d-11ed-bfe3-dac502259ad0.png

實(shí)驗(yàn)效果

通過宏定義:#define MASTER_BOARD來選擇兩塊板子的主從關(guān)系;

如若主機(jī)或從機(jī)的讀寫數(shù)據(jù)完全相同,則LED3會(huì)被點(diǎn)亮,否則LED2會(huì)不停閃爍。

案例 DMA方式通信

功能簡介

通過DMA方式讓兩塊AT-START BOARD的I2C接口進(jìn)行通信,測試作為主機(jī)或從機(jī)發(fā)送和接收數(shù)據(jù)。

資源準(zhǔn)備

5) 硬件環(huán)境 對應(yīng)產(chǎn)品型號(hào)的AT-START BOARD兩塊 4.7K上拉電阻 6) 軟件環(huán)境 projectat_start_f4xxexamplesi2ccommunication_dma

軟件設(shè)計(jì)

5) 配置流程

開啟I2C外設(shè)時(shí)鐘

配置I2C所復(fù)用的GPIO

配置I2C所使用的DMA通道

使能I2C外設(shè)接口

從機(jī)準(zhǔn)備接收數(shù)據(jù)

主機(jī)發(fā)送數(shù)據(jù)

從機(jī)準(zhǔn)備發(fā)送數(shù)據(jù)

主機(jī)接收數(shù)據(jù)

主機(jī)從機(jī)對比發(fā)送和接收到的數(shù)據(jù)是否正確

6)代碼介紹

main函數(shù)代碼描述

a95796b0-881d-11ed-bfe3-dac502259ad0.png

主機(jī)DMA發(fā)送接收完成中斷處理函數(shù)代碼描述

a98cc7ea-881d-11ed-bfe3-dac502259ad0.png ? ?

實(shí)驗(yàn)效果

通過宏定義:#define MASTER_BOARD來選擇兩塊板子的主從關(guān)系;

如若主機(jī)或從機(jī)的讀寫數(shù)據(jù)完全相同,則LED3會(huì)被點(diǎn)亮,否則LED2會(huì)不停閃爍。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5430

    瀏覽量

    123926
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8971

    瀏覽量

    153454
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1538

    瀏覽量

    127399
  • AT32
    +關(guān)注

    關(guān)注

    1

    文章

    121

    瀏覽量

    2649

原文標(biāo)題:AT32講堂041 | AT32F435/437 I2C使用指南

文章出處:【微信號(hào):AT32 MCU 雅特力科技,微信公眾號(hào):AT32 MCU 雅特力科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    AT32F435/437系列安全庫區(qū)的應(yīng)用原理、軟件使用方法及范例程序

    AT32F435/437 Security Library Application Note主要在闡述AT32F435/437系列安全庫區(qū)的應(yīng)用原理、軟件使用方法及范例程序。
    發(fā)表于 10-25 07:22

    AT32F435/437時(shí)鐘配置

    AT32F435/437時(shí)鐘配置主要介紹兩部分內(nèi)容:1、基于雅特力提供的V2.x.x 的板級支持包來進(jìn)行時(shí)鐘源碼的配置及修改2、如何使用配套的時(shí)鐘配置工具來進(jìn)行時(shí)鐘路徑及參數(shù)的設(shè)定,生
    發(fā)表于 10-25 06:18

    AT32F435/437 EDMA使用指南

    AT32F435/437 EDMA使用指南本文主要就EDMA 的基本功能進(jìn)行講解和案列解析。
    發(fā)表于 10-25 07:24

    AT32F435/437 I 2C使用指南

    AT32F435/437 I2C使用指南主要就I2C 總線接口的基本功能進(jìn)行講解和案例解析。
    發(fā)表于 10-25 08:09

    如何提升AT32F435/437性能

    AT32F435/437 Performance Improvement描述了如何通過軟件方法改善AT32F435_437的運(yùn)行效能。
    發(fā)表于 10-25 07:37

    AT32F435/437 ADC應(yīng)用說明

    AT32F435/437 ADC使用指南主要以ADC的特色功能進(jìn)行講解和案列解析。
    發(fā)表于 10-25 08:08

    AT32F435/437xx GPIO使用指南

    AT32F435/437xx的通用功能I/O (GPIO)提供了一系列與外部環(huán)境通訊的接口,可用于MCU與其他嵌入式設(shè)備之間通過數(shù)字或模擬方式的通訊。AT32F435/
    發(fā)表于 10-25 08:23

    AT32F435/437 OTGFS應(yīng)用說明

    AT32F435/437 OTGFS Application Note主要描述AT32 OTGFS 外設(shè)特性,OTGFS 支持主機(jī)和設(shè)備模式。
    發(fā)表于 10-25 07:01

    AT32F435/437 DMA使用指南

    AT32F435/437 擁有 2 個(gè) DMA 控制器(DMA1/DMA2),每個(gè) DMA 支持 7 個(gè)通道且外設(shè)的 DMA 請求可映射到任意通道上。本文主要就 DMA 的基本功能進(jìn)行
    發(fā)表于 10-25 08:07

    AT32F425 I2C使用指南

    AT32F425 I2C使用指南本文主要就I2C 總線接口的基本功能進(jìn)行講解和案例解析。
    發(fā)表于 10-25 07:39

    AT32F435&AT32F437入門使用指南

    AT32F435 & AT32F437入門使用指南旨在讓用戶快速使用AT32F435xx /AT32F437xx 進(jìn)行項(xiàng)目開發(fā),AT
    發(fā)表于 10-26 06:58

    雅特力AT32F435/437 OTGFS應(yīng)用筆記

    AT32F435/437包含2個(gè)獨(dú)立的OTGFS,編號(hào)OTGFS1和OTGFS2,本章將描述OTGFS支持的一些基本功能。 OTGFS1和OTGFS
    的頭像 發(fā)表于 03-08 13:23 ?2547次閱讀
    雅特力<b class='flag-5'>AT32F435</b>/<b class='flag-5'>437</b> OTGFS應(yīng)用筆記

    AT32講堂041 | AT32F435/437 I2C使用指南

    I2C接口簡介I2C接口是由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成,在標(biāo)準(zhǔn)模式下通信速度可達(dá)到100kHz,快速模式下則可以達(dá)到400kHz,增強(qiáng)快速模式可達(dá)到1MHz。一幀數(shù)據(jù)傳輸從開始信號(hào)開始,在結(jié)束
    的頭像 發(fā)表于 01-12 14:45 ?4317次閱讀
    AT32講堂041 | <b class='flag-5'>AT32F435</b>/<b class='flag-5'>437</b> <b class='flag-5'>I2C</b><b class='flag-5'>使用指南</b>

    雅特力AT32F435/F437入門使用指南

    搭建AT32開發(fā)環(huán)境一、調(diào)試工具及開發(fā)板目前AT32F435/F437開發(fā)板都自帶AT-Link-EZ調(diào)試工具,AT-Link-EZ如下圖左邊紅框所示,它也可拆開后單獨(dú)搭配其他電路板使用,支持IDE在線調(diào)試、在線燒錄、USB轉(zhuǎn)串口等功能。圖1.AT-
    的頭像 發(fā)表于 11-10 08:15 ?7247次閱讀
    雅特力<b class='flag-5'>AT32F435</b>/<b class='flag-5'>F437</b>入門<b class='flag-5'>使用指南</b>

    AT32F435 & AT32F437入門使用指南

    電子發(fā)燒友網(wǎng)站提供《AT32F435 & AT32F437入門使用指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-18 11:13 ?1次下載
    <b class='flag-5'>AT32F435</b> & AT32<b class='flag-5'>F437</b>入門<b class='flag-5'>使用指南</b>
    主站蜘蛛池模板: 乱高h辣黄文np公交车 | 亚洲图色视频 | 中国性猛交xxxx乱大交 | 手机免费看大片 | 最新sss华人 | 天天干夜夜操视频 | 夜夜爱夜夜操 | 人人艹人人艹 | 精品欧美 | 色激情五月 | 亚洲入口 | 女人张开双腿让男人桶爽免 | 天天拍天天干天天操 | 国产热re99久久6国产精品 | 模特视频一二三区 | 夜夜骑狠狠干 | 操操干| 日韩色天使综合色视频 | 亚洲韩国日本欧美一区二区三区 | 日韩一区二区视频在线观看 | 亚洲国产成人精彩精品 | 男人的j桶女人的j视频 | 亚洲一区二区视频 | 成人性视频网站 | 天天干天天综合 | 亚洲欧美日韩综合一区 | 欧美最猛性xxxx高清 | 色综合九九 | 国产成+人+综合+亚洲欧美丁香花 | 免费在线观看黄 | 91在线播放免费不卡无毒 | 天堂网欧美 | 天天操操操操操操 | 亚洲精品午夜久久aaa级久久久 | 日本免费不卡一区 | 在线毛片免费 | 五月婷婷丁香综合 | 在线色片 | 亚洲国产成人久久精品影视 | 91大神视频在线播放 | 国产三级国产精品国产普男人 |