電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

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

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

[復(fù)制鏈接]

678

主題

902

帖子

8293

積分

高級(jí)會(huì)員

Rank: 5Rank: 5

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


嵌入式DSP、ARM、FPGA多核技術(shù)開(kāi)發(fā),學(xué)習(xí)資料下載:http://site.tronlong.com/pfdownload

發(fā)表回復(fù)

本版積分規(guī)則

關(guān)閉

站長(zhǎng)推薦上一條 /1 下一條


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表