精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

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

雅特力 AT32 MCU ? 2023-01-12 14:45 ? 次閱讀

I2C接口簡介

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

I2C接口通信

主機通信流程

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

2. 主機通信初始化

在啟動通訊前須先設(shè)定I2C_CTRL2寄存器中的幾項參數(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:自動結(jié)束模式,當(dāng)數(shù)據(jù)傳輸完成后,自動發(fā)送STOP條件。3) 設(shè)置從機地址― 設(shè)置尋址的從機地址值(I2C_CTRL2的SADDR)― 設(shè)置從機地址模式(I2C_CTRL2的ADDR10)

ADDR10=0:7位地址模式

ADDR10=1:10位地址模式

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

3. 主機10 bits尋址的特殊時序初始化

在10位地址傳輸模式下,I2C_CTRL2的READH10用于產(chǎn)生特殊時序,當(dāng)READH10=1時,支持如下傳輸序:主機先發(fā)送數(shù)據(jù)給從機,然后再從從機讀取數(shù)據(jù),傳輸時序圖如下圖所示:圖3. 10位地址的讀訪問READH10=153cdca78-917f-11ed-ad0d-dac502259ad0.png主機在軟件結(jié)束模式(ASTOPEN=0)下,發(fā)送數(shù)據(jù)到從機,當(dāng)數(shù)據(jù)發(fā)送完成后設(shè)置READH10=1,然后再從從機接收數(shù)據(jù)。圖4. 10位地址的讀訪問READH10=053ea549a-917f-11ed-ad0d-dac502259ad0.png主機通信初始化軟件接口主機通信初始化所用到的軟件接口通過獨立的函數(shù)接口實現(xiàn),如下:54046a60-917f-11ed-ad0d-dac502259ad0.pngi2c_init函數(shù)三個參數(shù)分別為:所使用的I2C、數(shù)字濾波值和主機時鐘配置值。i2c_transmit_set函數(shù)用于初始化通信參數(shù),包括:所使用的I2C、從機地址、傳輸字節(jié)數(shù)、停止條件產(chǎn)生模式和起始條件產(chǎn)生模式。i2c_addr10_mode_enable函數(shù)用于使能10位地址模式。i2c_addr10_header_enable函數(shù)用于使能10位地址頭讀取時序,即主機發(fā)送完整的10位從機地址讀序列或主機只發(fā)送10位地址的前7位。主機發(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]個數(shù)據(jù);4) 如果此時I2C_STS的TCRLD=1(重載模式),分為以下兩種情況:― 剩余字節(jié)數(shù)N>255:向CNT寫入255,N=N-255,TCRLD被自動清0,傳輸繼續(xù);― 剩余字節(jié)數(shù)N≤255:關(guān)閉重載模式(RLDEN=0),向CNT寫入N,TCRLD被自動清0,傳輸繼續(xù)。5) 結(jié)束時序― 停止條件產(chǎn)生:

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

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

― 等待產(chǎn)生STOP條件,當(dāng)STOP條件產(chǎn)生時,I2C_STS的STOPF置1,將I2C_CLR的STOPC寫1,清除STOPF標(biāo)志,傳輸結(jié)束。圖5. I2C主機發(fā)送流程圖54215558-917f-11ed-ad0d-dac502259ad0.png圖6. I2C主機發(fā)送時序圖5449fbf2-917f-11ed-ad0d-dac502259ad0.png主機發(fā)送流程軟件接口主機發(fā)送通過獨立的函數(shù)接口實現(xiàn),如下:54686a74-917f-11ed-ad0d-dac502259ad0.pngi2c_master_transmit函數(shù)為i2c_application.c文件所提供的應(yīng)用層接口函數(shù),參數(shù)包括:I2C結(jié)構(gòu)體指針、從機地址、發(fā)送數(shù)據(jù)指針、發(fā)送數(shù)據(jù)字節(jié)數(shù)和函數(shù)超時時間。注:此函數(shù)為Artery所提供的標(biāo)準主機發(fā)送函數(shù)。用戶也可根據(jù)前述主機發(fā)送流程,自行編寫主機發(fā)送函數(shù)。主機接收流程1) 當(dāng)收到數(shù)據(jù)后,RDBF=1,讀取RXDT數(shù)據(jù)寄存器,RDBF被自動清零;2) 重復(fù)步驟2直到接收CNT[7:0]個數(shù)據(jù);3) 如果此時I2C_STS的TCRLD=1(重載模式),分為以下兩種情況:― 剩余字節(jié)數(shù)N>255:向CNT寫入255,N=N-255,TCRLD被自動清0,傳輸繼續(xù);― 剩余字節(jié)數(shù)N≤255:關(guān)閉重載模式(RLDEN=0),向CNT寫入N,TCRLD被自動清0,傳輸繼續(xù)。4) 當(dāng)在接收到最后一個字節(jié)時,主機會自動發(fā)送一個NACK。5) 結(jié)束時序― 停止條件產(chǎn)生:

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

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

― 等待產(chǎn)生STOP條件,當(dāng)STOP條件產(chǎn)生時,I2C_STS的STOPF置1,將I2C_CLR的STOPC寫1,清除STOPF標(biāo)志,傳輸結(jié)束。圖7. I2C主機接收流程圖54828260-917f-11ed-ad0d-dac502259ad0.png圖8. I2C主機接收時序圖54aaca5e-917f-11ed-ad0d-dac502259ad0.png主機接收流程軟件接口主機接收通過獨立的函數(shù)接口實現(xiàn),如下:54b4e872-917f-11ed-ad0d-dac502259ad0.pngi2c_master_receive函數(shù)為i2c_application.c文件所提供的應(yīng)用層接口函數(shù),參數(shù)包括:I2C結(jié)構(gòu)體指針、從機地址、接收數(shù)據(jù)指針、接收數(shù)據(jù)字節(jié)數(shù)和函數(shù)超時時間。注:此函數(shù)為Artery所提供的標(biāo)準主機接收函數(shù)。用戶也可根據(jù)前述主機接收流程,自行編寫主機接收函數(shù)。

從機通信流程

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

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

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

2. 從機地址匹配

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

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

從設(shè)備可以對每個收到的字節(jié)進行應(yīng)答控制。所需配置:SCTRL=1&RLDEN=1&STRETCH=0&CNT≥1從機字節(jié)控制流程:1) 每收到一個字節(jié)TCRLD置位,時鐘延展于第8和第9個脈沖之間2) 軟件讀取RXDT中的值,并決定是否置位ACK3) 軟件重裝載CNT=1來停止時鐘延展4) 應(yīng)答或非應(yīng)答信號在第9個脈沖時刻出現(xiàn)在總線上注意:置位SCTRL時,必須開啟時鐘延展,即STRETCH=0CNT可以是大于1的值,來實現(xiàn)多個字節(jié)以自動ACK接收完畢后再啟動應(yīng)答控制,從設(shè)備發(fā)送時推薦關(guān)閉SCTRL,此時無需字節(jié)應(yīng)答控制。從機通信初始化軟件接口從機通信初始化所用到的軟件接口通過獨立的函數(shù)接口實現(xiàn),如下:54c5fee6-917f-11ed-ad0d-dac502259ad0.pngi2c_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ù)用于使能從機字節(jié)控制模式。i2c_clock_stretch_enable函數(shù)用于使能從機時鐘延展功能。i2c_reload_enable函數(shù)用于使能發(fā)送數(shù)據(jù)重載模式。從機發(fā)送流程1) 響應(yīng)主機地址,匹配時回復(fù)ACK;2) TXDT為空時,置位TDIS,從設(shè)備寫入發(fā)送數(shù)據(jù);3) 每發(fā)送一個字節(jié)會收到ACK,且置位TDIS;4) 如果收到NACK位:

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

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

5) 如果收到STOP位:

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

當(dāng)從機發(fā)送開啟時鐘延展(STRETCH=0)時,在等待ADDRF標(biāo)志時和發(fā)送前一個數(shù)據(jù)的第9個時鐘脈沖后,會把TXDT中的數(shù)據(jù)拷貝到移位寄存器中,如果此時TDIS還是置位,表示TXDT沒有寫進待發(fā)送數(shù)據(jù),將發(fā)生時鐘延展,如下流程圖:圖9. I2C從機發(fā)送流程圖54dc43f4-917f-11ed-ad0d-dac502259ad0.png需要注意的是,在時鐘延展關(guān)閉(STRETCH=1)的情況下,如果在將要傳輸數(shù)據(jù)的第一個Bit位開始發(fā)送之前,也就是SDA邊沿產(chǎn)生之前,如果數(shù)據(jù)還未寫入TXDT數(shù)據(jù)寄存器,那么會發(fā)生欠載錯誤,此時I2C_STS的OUF將會置1,并將0xFF發(fā)送到總線。為了能及時的寫入數(shù)據(jù),可以在通信開始前,先將數(shù)據(jù)寫入到DT寄存器:軟件先將TDBE置1,目的是為了清空TXDT寄存器的數(shù)據(jù),然后將第一個數(shù)據(jù)寫入TXDT寄存器,此時TDBE清零。圖10. I2C從機發(fā)送時序圖54f0179e-917f-11ed-ad0d-dac502259ad0.png從機發(fā)送流程軟件接口從機發(fā)送通過獨立的函數(shù)接口實現(xiàn),如下:55110e9a-917f-11ed-ad0d-dac502259ad0.png指針、發(fā)送數(shù)據(jù)指針、發(fā)送數(shù)據(jù)字節(jié)數(shù)和函數(shù)超時時間。注:此函數(shù)為Artery所提供的標(biāo)準從機發(fā)送函數(shù)。用戶也可根據(jù)前述從機發(fā)送流程,自行編寫從機發(fā)送函數(shù)。從機接收流程1) 當(dāng)收到數(shù)據(jù)后,RDBF=1,讀取RXDT數(shù)據(jù)寄存器,RDBF被自動清零;2) 重復(fù)步驟2直到所有數(shù)據(jù)接收完成;3) 等待收到STOP條件,當(dāng)收到STOP條件時,I2C_STS的STOPF置1,將I2C_CLR的STOPC寫1,清除STOPF標(biāo)志,傳輸結(jié)束。圖11. I2C從機接收流程圖552e4a1e-917f-11ed-ad0d-dac502259ad0.png圖12. I2C從機接收時序圖5566a81e-917f-11ed-ad0d-dac502259ad0.png從機接收流程軟件接口從機接收通過獨立的函數(shù)接口實現(xiàn),如下:55829470-917f-11ed-ad0d-dac502259ad0.pngi2c_slave_receive函數(shù)為i2c_application.c文件所提供的應(yīng)用層接口函數(shù),參數(shù)包括:I2C結(jié)構(gòu)體指針、接收數(shù)據(jù)指針、接收數(shù)據(jù)字節(jié)數(shù)和函數(shù)超時時間。注:此函數(shù)為Artery所提供的標(biāo)準從機接收函數(shù)。用戶也可根據(jù)前述從機接收流程,自行編寫從機接收函數(shù)。

I2C配置工具

功能簡介

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

資源準備

1) 軟件環(huán)境Artery_I2C_Timing_Configuration.exe圖13. Artery I2C Timing Configuration55a2283a-917f-11ed-ad0d-dac502259ad0.png

使用步驟

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

  • Master:主模式,I2C作為主機;
  • Slave:從模式,I2C作為從機。

3) 選擇I2C速度模式

  • Standard-mode:標(biāo)準模式,范圍0~100kHz;
  • Fast-mode:快速模式,范圍0~400kHz;
  • Fast-modePlus:增強快速模式,范圍0~1000kHz。

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

  • On:打開;
  • Off:關(guān)閉。

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

案例 讀寫EEPROM

功能簡介

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

資源準備

1) 硬件環(huán)境對應(yīng)產(chǎn)品型號的AT-START BOARD4.7K上拉電阻EEPROM存儲設(shè)備2) 軟件環(huán)境project\at_start_f4xx\examples\i2c\eeprom

軟件設(shè)計

1) 配置流程

  • 開啟I2C外設(shè)時鐘
  • 配置I2C所復(fù)用的GPIO
  • 配置I2C所用的DMA通道
  • 使能I2C外設(shè)接口
  • 寫入EEPROM并讀取寫入的數(shù)據(jù)
  • 比較讀寫數(shù)據(jù)內(nèi)容是否正確

2)代碼介紹

  • main函數(shù)代碼描述

56290e54-917f-11ed-ad0d-dac502259ad0.png

實驗效果

  • 如若讀寫數(shù)據(jù)完全相同,則LED3會被點亮。

案例 輪詢方式通信

功能簡介

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

資源準備

1) 硬件環(huán)境對應(yīng)產(chǎn)品型號的AT-START BOARD兩塊4.7K上拉電阻2) 軟件環(huán)境project\at_start_f4xx\examples\i2c\communication_poll

軟件設(shè)計

1) 配置流程

  • 開啟I2C外設(shè)時鐘
  • 配置I2C所復(fù)用的GPIO
  • 使能I2C外設(shè)接口
  • 從機準備接收數(shù)據(jù)
  • 主機發(fā)送數(shù)據(jù)
  • 從機準備發(fā)送數(shù)據(jù)
  • 主機接收數(shù)據(jù)
  • 主機從機對比發(fā)送和接收到的數(shù)據(jù)是否正確

2) 代碼介紹

  • main函數(shù)代碼描述

56333834-917f-11ed-ad0d-dac502259ad0.png

實驗效果

  • 通過宏定義:#define MASTER_BOARD來選擇兩塊板子的主從關(guān)系;
  • 如若主機或從機的讀寫數(shù)據(jù)完全相同,則LED3會被點亮,否則LED2會不停閃爍。

案例 中斷方式通信

功能簡介

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

資源準備

3) 硬件環(huán)境對應(yīng)產(chǎn)品型號的AT-START BOARD兩塊4.7K上拉電阻4) 軟件環(huán)境project\at_start_f4xx\examples\i2c\communication_int

軟件設(shè)計

3) 配置流程

  • 開啟I2C外設(shè)時鐘
  • 配置I2C所復(fù)用的GPIO
  • 使能I2C外設(shè)接口
  • 使能I2C中斷
  • 從機準備接收數(shù)據(jù)
  • 主機發(fā)送數(shù)據(jù)
  • 從機準備發(fā)送數(shù)據(jù)
  • 主機接收數(shù)據(jù)
  • 主機從機對比發(fā)送和接收到的數(shù)據(jù)是否正確

4) 代碼介紹

  • main函數(shù)代碼描述

568aa326-917f-11ed-ad0d-dac502259ad0.png

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

56d20de2-917f-11ed-ad0d-dac502259ad0.png

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

56f8bdb6-917f-11ed-ad0d-dac502259ad0.png

實驗效果

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

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

案例 DMA方式通信

功能簡介

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

資源準備

5) 硬件環(huán)境對應(yīng)產(chǎn)品型號的AT-START BOARD兩塊4.7K上拉電阻6) 軟件環(huán)境project\at_start_f4xx\examples\i2c\communication_dma

軟件設(shè)計

5) 配置流程

  • 開啟I2C外設(shè)時鐘
  • 配置I2C所復(fù)用的GPIO
  • 配置I2C所使用的DMA通道
  • 使能I2C外設(shè)接口
  • 從機準備接收數(shù)據(jù)
  • 主機發(fā)送數(shù)據(jù)
  • 從機準備發(fā)送數(shù)據(jù)
  • 主機接收數(shù)據(jù)
  • 主機從機對比發(fā)送和接收到的數(shù)據(jù)是否正確

6)代碼介紹

  • main函數(shù)代碼描述

571f13bc-917f-11ed-ad0d-dac502259ad0.png

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

5748bed8-917f-11ed-ad0d-dac502259ad0.png

實驗效果

  • 通過宏定義:#define MASTER_BOARD來選擇兩塊板子的主從關(guān)系;
  • 如若主機或從機的讀寫數(shù)據(jù)完全相同,則LED3會被點亮,否則LED2會不停閃爍。


關(guān)于雅特力雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器(MCU)創(chuàng)新趨勢的芯片設(shè)計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發(fā)與創(chuàng)新,全系列采用55nm先進工藝及ARM Cortex-M4高效能或M0+低功耗內(nèi)核,締造M4業(yè)界最高主頻288MHz運算效能,并支持工業(yè)級別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當(dāng)多元的終端產(chǎn)品成功案例:如微型打印機、掃地機、光流無人機、熱成像儀、激光雷達、工業(yè)縫紉機、伺服驅(qū)控、電競周邊市場、斷路器、ADAS、T-BOX、數(shù)字電源、電動工具等終端設(shè)備應(yīng)用,廣泛地覆蓋5G物聯(lián)網(wǎng)、消費、商務(wù)及工控等領(lǐng)域。

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

    關(guān)注

    18

    文章

    5971

    瀏覽量

    135855
  • 數(shù)據(jù)線
    +關(guān)注

    關(guān)注

    8

    文章

    282

    瀏覽量

    37689
收藏 人收藏

    評論

    相關(guān)推薦

    雅特力AT32F402/F405 I2C使用指南

    I2C接口簡介I2C接口是由數(shù)據(jù)線SDA和時鐘線SCL構(gòu)成,在標(biāo)準模式下通信速度可達到100kHz,快速模式下則可以達到400kHz,增強快速模式可達到1MHz。一幀數(shù)據(jù)傳輸從開始信號開始,在結(jié)束
    的頭像 發(fā)表于 11-20 01:03 ?80次閱讀
    雅特力AT32<b class='flag-5'>F</b>402/<b class='flag-5'>F</b>405 <b class='flag-5'>I2C</b><b class='flag-5'>使用指南</b>

    RISC V的I2C操作

    _0_io_scl_write(system_i2c_0_io_scl_write),.system_i2c_0_io_scl_read(system_i2c_0_io_scl_read),WriteEnable信號的處理
    的頭像 發(fā)表于 11-01 11:06 ?128次閱讀

    光隔離器選擇指南:TPS2384 I2C接口

    電子發(fā)燒友網(wǎng)站提供《光隔離器選擇指南:TPS2384 I2C接口.pdf》資料免費下載
    發(fā)表于 10-11 09:34 ?0次下載
    光隔離器選擇<b class='flag-5'>指南</b>:TPS2384 <b class='flag-5'>I2C</b>接口

    了解I2C總線

    電子發(fā)燒友網(wǎng)站提供《了解I2C總線.pdf》資料免費下載
    發(fā)表于 10-08 11:13 ?1次下載
    了解<b class='flag-5'>I2C</b>總線

    I2C基本指南

    電子發(fā)燒友網(wǎng)站提供《I2C基本指南.pdf》資料免費下載
    發(fā)表于 09-10 09:40 ?0次下載
    <b class='flag-5'>I2C</b>基本<b class='flag-5'>指南</b>

    MHMF041L1C2-MINAS A6 系列 Block動作應(yīng)用說明資料 -I/F啟動- 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MHMF041L1C2-MINAS A6 系列 Block動作應(yīng)用說明資料 -I/F啟動-相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有
    發(fā)表于 09-09 19:15
    MHMF<b class='flag-5'>041L1C2</b>-MINAS A6 系列 Block動作應(yīng)用說明資料 -<b class='flag-5'>I</b>/<b class='flag-5'>F</b>啟動- 松下

    MHMF041A1C2-MINAS A6 系列 Block動作應(yīng)用說明資料 -I/F啟動- 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MHMF041A1C2-MINAS A6 系列 Block動作應(yīng)用說明資料 -I/F啟動-相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有
    發(fā)表于 09-03 18:51
    MHMF<b class='flag-5'>041A1C2</b>-MINAS A6 系列 Block動作應(yīng)用說明資料 -<b class='flag-5'>I</b>/<b class='flag-5'>F</b>啟動- 松下

    I2C邏輯選型指南

    電子發(fā)燒友網(wǎng)站提供《I2C邏輯選型指南.pdf》資料免費下載
    發(fā)表于 06-20 16:20 ?1次下載

    用CY8CKIT-041S-MAX做一個I2C通信項目,發(fā)現(xiàn)Cy_SCB_I2C_Enable (cy_scb_i2c.h) 出現(xiàn)錯誤的原因?

    我正在嘗試用 CY8CKIT-041S-MAX 做一個 I2C 通信項目。 我?guī)缀鯇懲炅舜a,但在構(gòu)建時,我發(fā)現(xiàn) Cy_SCB_I2C_Enable (cy_scb_i2c.h) 出現(xiàn)
    發(fā)表于 05-21 08:31

    什么是I2C協(xié)議 I2C總線的控制邏輯

    在實際使用過程中,I2C比較容易出現(xiàn)的一個問題就是死鎖 ,死鎖在I2C中主要表現(xiàn)為:I2C死鎖時表現(xiàn)為SCL為高,SDA一直為低。
    發(fā)表于 03-12 09:17 ?954次閱讀
    什么是<b class='flag-5'>I2C</b>協(xié)議 <b class='flag-5'>I2C</b>總線的控制邏輯

    GD32 MCU硬件I2C不可靠不如軟件I2C?來看看紅楓派開發(fā)版的硬件I2C驅(qū)動如何做到穩(wěn)得一批

    在一個評論中,看到網(wǎng)友對硬件I2C的討論,硬件I2C Busy找不到原因、軟件I2C穩(wěn)得一批。
    的頭像 發(fā)表于 02-23 09:37 ?2704次閱讀
    GD32 MCU硬件<b class='flag-5'>I2C</b>不可靠不如軟件<b class='flag-5'>I2C</b>?來看看紅楓派開發(fā)版的硬件<b class='flag-5'>I2C</b>驅(qū)動如何做到穩(wěn)得一批

    雅特力AT32F423 I2C使用指南

    I2C接口簡介I2C接口是由數(shù)據(jù)線SDA和時鐘線SCL構(gòu)成,在標(biāo)準模式下通信速度可達到100kHz,快速模式下則可以達到400kHz,增強快速模式可達到1MHz。一幀數(shù)據(jù)傳輸從開始信號開始,在結(jié)束
    的頭像 發(fā)表于 02-19 13:26 ?541次閱讀
    雅特力AT32<b class='flag-5'>F</b>423 <b class='flag-5'>I2C</b><b class='flag-5'>使用指南</b>

    AT32F423 I 2C使用指南

    電子發(fā)燒友網(wǎng)站提供《AT32F423 I 2C使用指南.pdf》資料免費下載
    發(fā)表于 02-01 09:30 ?0次下載
    AT32<b class='flag-5'>F</b>423 <b class='flag-5'>I</b> <b class='flag-5'>2C</b><b class='flag-5'>使用指南</b>

    AT32F425入門使用指南

    電子發(fā)燒友網(wǎng)站提供《AT32F425入門使用指南.pdf》資料免費下載
    發(fā)表于 12-18 11:14 ?6次下載
    AT32<b class='flag-5'>F</b>425入門<b class='flag-5'>使用指南</b>

    AT32F435 & AT32F437入門使用指南

    電子發(fā)燒友網(wǎng)站提供《AT32F435 & AT32F437入門使用指南.pdf》資料免費下載
    發(fā)表于 12-18 11:13 ?1次下載
    <b class='flag-5'>AT32F435</b> & AT32<b class='flag-5'>F437</b>入門<b class='flag-5'>使用指南</b>