找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2606|回復: 0
收起左側(cè)

基于AM4376/79 ARM+FPGA的I2C通信案例分享

[復制鏈接]
ID:336245 發(fā)表于 2020-10-27 13:03 | 顯示全部樓層 |閱讀模式
1.1                 I2C通信核心板簡介
本案例主要基于創(chuàng)龍科技的AM4376/AM4379 ARM Cortex-A9 + XilinxSpartan-6 FPGA處理器設計的異構(gòu)多核工業(yè)級核心板進行講解:

創(chuàng)龍SOM-TL437xF是一款基于TI Sitara系列AM4376/AM4379 ARM Cortex-A9 + Xilinx Spartan-6 FPGA處理器設計的異構(gòu)多核工業(yè)級核心板。核心板內(nèi)部AM437x與Spartan-6通過GPMC、I2C通信總線連接。通過工業(yè)級B2B連接器引出LCD、CAMERA、GPMC、CAN等接口。核心板經(jīng)過專業(yè)的PCB Layout和高低溫測試驗證,穩(wěn)定可靠,可滿足各種工業(yè)應用環(huán)境。
用戶使用核心板進行二次開發(fā)時,僅需專注上層運用,降低了開發(fā)難度和時間成本,可快速進行產(chǎn)品方案評估與技術(shù)預研。
1.png
1
圖片2.png
2

1.2                 I2C通信案例功能
案例功能:在FPGA端實現(xiàn)I2C Slave,并內(nèi)置用戶可讀寫寄存器、LED寄存器、KEY寄存器。ARM端作為Master,可通過核心板內(nèi)部與FPGA連接的I2C0接口讀寫FPGA端I2C Slave用戶可讀寫寄存器0x00,LED寫寄存器0x01點亮或熄滅FPGA端LED(寫1則點亮,寫0則熄滅),查看KEY寄存器0x02檢測FPGA端KEY狀態(tài)。
1.3                 I2C通信操作說明
將產(chǎn)品資料“4-軟件資料\Demo\FPGA\i2c_slave\bin\i2c_test_6slx16.bit”可執(zhí)行程序加載至FPGA端。進入評估板文件系統(tǒng)后,執(zhí)行如下命令可查看到I2C0總線上的掛載設備,其中0x2a為FPGA端I2C Slave的地址。
Target#mkdir/configfs
圖片3.png
3

執(zhí)行如下命令進行用戶可讀寫寄存器0x00的讀寫測試。
Target#i2cset -f -y 0 0x2a 0x00 0x55          //寄存器0x000x55
Target#i2cget -f -y 0 0x2a 0x00                  //讀取寄存器0x00,值為0x55
圖片4.png
4

執(zhí)行如下命令進行LED寄存器0x01的寫測試,實現(xiàn)FPGA端LED的亮滅控制。
Target#i2cset -f -y 0 0x2a 0x01 0xe0          //LED寄存器0x010xe0,點亮FPGALED5LED6、LED7
Target#i2cset -f -y 0 0x2a 0x01 0x00          //LED寄存器0x010x00,熄滅FPGALED5LED6、LED7

圖片5.png 5

執(zhí)行如下命令進行KEY寄存器0x02的讀測試,實現(xiàn)FPGA端KEY的狀態(tài)檢測。
Target#i2cget -f -y 0 0x2a 0x02           //讀取KEY寄存器0x02,值為0xe0
圖片6.png
6

       按下FPGA端按鍵KEY6并保持按下狀態(tài),再執(zhí)行如下命令。
Target#i2cget -f -y 0 0x2a 0x02           //讀取KEY寄存器0x02,值為0xc0
圖片7.png
7

       按下FPGA端按鍵KEY7并保持按下狀態(tài),再執(zhí)行如下命令。
Target#i2cget -f -y 0 0x2a 0x02           //讀取KEY寄存器0x02,值為0xa0
圖片8.png
8

1.4                 I2C通信管腳約束
FPGA端管腳約束請查看產(chǎn)品資料“4-軟件資料\Demo\FPGA\i2c_slave\project\i2c_slave_6slx16\constraints\i2c_test.ucf”文件。
1.5                 I2C通信關鍵代碼
(1)   定義I2C、LED、KEY、時鐘IO。
圖片9.png
9hdl/i2c_test.v

(2)   輸出100MHz時鐘給I2C Slave模塊。
圖片10.png
10hdl/i2c_test.v

(3)   調(diào)用I2C Slave模塊。
圖片11.png
11hdl/i2c_test.v

I2C Slave模塊程序來源參考:https://opencores.org/projects/i2cslave
(4)   根據(jù)LED寄存器的值控制LED,并將KEY狀態(tài)值保存至KEY寄存器。
圖片12.png
12hdl/i2c_test.v

(5)   設置I2C Slave地址為0x2a。
圖片13.png
13hdl/i2cslave/i2cSlave_define.v

RTL原理圖如下所示:
圖片14.png
14

圖片1.png
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表