干貨分享|基于AM4376/79 ARM+FPGA的I2C通信案例分享1.1 I2C通信核心板簡介 本案例主要基于創(chuàng)龍科技的AM4376/AM4379 ARM Cortex-A9 + XilinxSpartan-6 FPGA處理器設(shè)計(jì)的異構(gòu)多核工業(yè)級核心板進(jìn)行講解: 創(chuàng)龍SOM-TL437xF是一款基于TI Sitara系列AM4376/AM4379 ARM Cortex-A9 + Xilinx Spartan-6 FPGA處理器設(shè)計(jì)的異構(gòu)多核工業(yè)級核心板。核心板內(nèi)部AM437x與Spartan-6通過GPMC、I2C通信總線連接。通過工業(yè)級B2B連接器引出LCD、CAMERA、GPMC、CAN等接口。核心板經(jīng)過專業(yè)的PCB layout和高低溫測試驗(yàn)證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。 用戶使用核心板進(jìn)行二次開發(fā)時,僅需專注上層運(yùn)用,降低了開發(fā)難度和時間成本,可快速進(jìn)行產(chǎn)品方案評估與技術(shù)預(yù)研。
圖片1.png (609.55 KB, 下載次數(shù): 82)
下載附件
保存到相冊
2020-10-26 19:00 上傳
圖 1
圖片2.png (119.23 KB, 下載次數(shù): 99)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 2 1.2 I2C通信案例功能案例功能:在FPGA端實(shí)現(xiàn)I2C Slave,并內(nèi)置用戶可讀寫寄存器、LED寄存器、KEY寄存器。ARM端作為Master,可通過核心板內(nèi)部與FPGA連接的I2C0接口讀寫FPGA端I2C Slave用戶可讀寫寄存器0x00,LED寫寄存器0x01點(diǎn)亮或熄滅FPGA端LED(寫1則點(diǎn)亮,寫0則熄滅),查看KEY寄存器0x02檢測FPGA端KEY狀態(tài)。 1.3 I2C通信操作說明將產(chǎn)品資料“4-軟件資料\Demo\FPGA\i2c_slave\bin\i2c_test_6slx16.bit”可執(zhí)行程序加載至FPGA端。進(jìn)入評估板文件系統(tǒng)后,執(zhí)行如下命令可查看到I2C0總線上的掛載設(shè)備,其中0x2a為FPGA端I2C Slave的地址。 Target# mkdir/configfs
圖片3.png (15.68 KB, 下載次數(shù): 89)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 3 執(zhí)行如下命令進(jìn)行用戶可讀寫寄存器0x00的讀寫測試。 Target# i2cset -f -y 0 0x2a 0x00 0x55 //往寄存器0x00寫0x55 Target# i2cget -f -y 0 0x2a 0x00 //讀取寄存器0x00,值為0x55
圖片4.png (3.34 KB, 下載次數(shù): 83)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 4 執(zhí)行如下命令進(jìn)行LED寄存器0x01的寫測試,實(shí)現(xiàn)FPGA端LED的亮滅控制。 Target# i2cset -f -y 0 0x2a 0x01 0xe0 //往LED寄存器0x01寫0xe0,點(diǎn)亮FPGA端LED5、LED6、LED7 Target# i2cset -f -y 0 0x2a 0x01 0x00 //往LED寄存器0x01寫0x00,熄滅FPGA端LED5、LED6、LED7
圖片5.png (2.83 KB, 下載次數(shù): 93)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 5 執(zhí)行如下命令進(jìn)行KEY寄存器0x02的讀測試,實(shí)現(xiàn)FPGA端KEY的狀態(tài)檢測。 Target# i2cget -f -y 0 0x2a 0x02 //讀取KEY寄存器0x02,值為0xe0
圖片6.png (2.2 KB, 下載次數(shù): 89)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 6 按下FPGA端按鍵KEY6并保持按下狀態(tài),再執(zhí)行如下命令。 Target# i2cget -f -y 0 0x2a 0x02 //讀取KEY寄存器0x02,值為0xc0
圖片7.png (2.2 KB, 下載次數(shù): 101)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 7 按下FPGA端按鍵KEY7并保持按下狀態(tài),再執(zhí)行如下命令。 Target# i2cget -f -y 0 0x2a 0x02 //讀取KEY寄存器0x02,值為0xa0
圖片8.png (2.17 KB, 下載次數(shù): 90)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 8 1.4 I2C通信管腳約束FPGA端管腳約束請查看產(chǎn)品資料“4-軟件資料\Demo\FPGA\i2c_slave\project\i2c_slave_6slx16\constraints\i2c_test.ucf”文件。 1.5 I2C通信關(guān)鍵代碼(1) 定義I2C、LED、KEY、時鐘IO。
圖片9.png (16.81 KB, 下載次數(shù): 85)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 9hdl/i2c_test.v (2) 輸出100MHz時鐘給I2C Slave模塊。
圖片10.png (19.69 KB, 下載次數(shù): 81)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 10hdl/i2c_test.v (3) 調(diào)用I2C Slave模塊。
圖片11.png (10.05 KB, 下載次數(shù): 80)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 11hdl/i2c_test.v (4) 根據(jù)LED寄存器的值控制LED,并將KEY狀態(tài)值保存至KEY寄存器。 圖 12hdl/i2c_test.v (5) 設(shè)置I2C Slave地址為0x2a。
圖片13.png (16.85 KB, 下載次數(shù): 79)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 13hdl/i2cslave/i2cSlave_define.v RTL原理圖如下所示:
圖片14.png (51.8 KB, 下載次數(shù): 84)
下載附件
保存到相冊
2020-10-26 19:01 上傳
圖 14
|