国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 2502|回復: 0
打印 上一主題 下一主題

全國產T3+FPGA的SPI與I2C通信方案分享

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2024-2-6 09:38:11 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
近年來,隨著中國新基建、[color=var(--weui-LINK)][url=]中國制造2025[/url]規劃的持續推進,單ARM處理器越來越難勝任工業現場的功能要求,特別是如今能源電力、工業控制、智慧醫療等行業,往往更需要ARM + FPGA架構的處理器平臺來實現例如多路/高速AD采集、多路網口、多路串口、多路/高速并行DI/DO、高速數據并行處理等特定功能,因此ARM + FPGA架構處理器平臺愈發受市場歡迎。

因此,創龍科技一年前正式推出了國產化率100%的ARM + FPGA工業核心板,它基于全志T3 + 紫光同創Logos處理器設計。


全志T3為準車規級芯片,四核ARM Cortex-A7架構,主頻高達1.2GHz,支持雙路網口、八路UART、SATA大容量存儲接口,同時支持4路顯示、GPU以及1080P H.264視頻硬件編解碼。另外,創龍科技已在T3平臺適配國產嵌入式系統翼輝[color=var(--weui-LINK)][url=]SylixOS[/url],真正實現軟硬件國產化。

紫光同創Logos PGL25G/PGL50G FPGA在工業領域應用廣泛,邏輯資源分別為27072/51360,與國外友商產品pin to pin兼容,主要用于多通道/高速AD采集或接口拓展。因其價格低、質量穩定、開發環境易用等優點,受到工業用戶的廣泛好評。尤其是開發環境,最快3天可完成從國外友商產品到紫光同創產品的切換。

圖1 ARM + FPGA典型應用場景

SPI通信優勢與應用場景
SPI(Serial Peripheral Interface)是一種用于串行數據傳輸的通信協議,SPI通信具有帶寬高、實時性強、傳輸速度快、連接簡單、可靠性高和靈活性強等優勢。

SPI協議適用于許多嵌入式系統和外圍設備之間的通信需求,可提供快速、可靠和靈活的數據傳輸,非常適合“小數據-時延”和“大數據-高帶寬”的應用場景。

圖2 SPI通信總線
I2C通信優勢和應用場景
I2C(Inter-Integrated Circuit)是一種串行雙向通信協議,I2C通信具有硬件資源需求低、簡單靈活、可靠性高和支持多種設備類型等優勢。

I2C協議可提供簡單、可靠和靈活的數據傳輸。它廣泛應用于各種傳感器、存儲設備、顯示設備和通信模塊等領域。適用控制命名傳輸和系統配置的應用場景。

圖3 I2C通信總線

國產T3 + FPGA的SPI與I2C通信方案介紹
本章節主要介紹全志科技T3與紫光同創Logos基于SPI、I2C的ARM + FPGA通信方案,使用的硬件平臺為:創龍科技TLT3F-EVM工業評估板。I2C通信案案例功能實現T3(ARM Cortex-A7)與FPGA的TWI(I2C)通信功能。
FPGA案例源碼為“4-軟件資料\Demo\fpga-demo\i2c_slave”,實現I2C Slave功能,并內置用戶可讀寫寄存器、LED寄存器、KEY寄存器。
ARM端作為I2C Master,可通過TWI(I2C)總線讀寫FPGA端用戶可讀寫寄存器0x00、LED寫寄存器0x01(寫1則點亮FPGA端LED,寫0則熄滅),以及查看KEY寄存器0x02檢測FPGA端用戶輸入按鍵狀態。
案例測試評估板上電,請先加載運行FPGA端可執行程序。執行如下命令可查看到I2C總線上的掛載設備,其中0x2a為FPGA端I2C Slave的地址。

Target#echo "1 4 1 7" > /proc/sys/kernel/printk //屏蔽內核printk打印,避免I2C驅動掃描找不到設備時打印警告信息
Target#i2cdetect -r -y 0

圖4
執行如下命令,讀寫FPGA端用戶可讀寫寄存器0x00。

Target#i2cset -f -y 0 0x2a 0x00 0x55 //往寄存器0x00寫0x55
Target#i2cget -f -y 0 0x2a 0x00 //讀取寄存器0x00,值為0x55

圖5

執行如下命令,寫FPGA端LED寄存器0x01,實現對FPGA端用戶可編程指示燈控制。

Target#i2cset -f -y 0 0x2a 0x01 0xc0 //往LED寄存器0x01寫0xc0,點亮FPGA端LED3、LED4
Target#i2cset -f -y 0 0x2a 0x01 0x00 //往LED寄存器0x01寫0x00,熄滅FPGA端LED3、LED4

圖6
執行如下命令,讀FPGA端KEY寄存器0x02,實現對FPGA端用戶輸入按鍵的狀態檢測。

Target#i2cget -f -y 0 0x2a 0x02 //讀取KEY寄存器0x02,值為0xe0

圖7
請按下FPGA端用戶輸入按鍵KEY7并保持按下狀態,再執行如下命令。

Target#i2cget -f -y 0 0x2a 0x02 //讀取KEY寄存器0x02,值為0xc0

圖8
請按下FPGA端用戶輸入按鍵KEY8并保持按下狀態,再執行如下命令。

Target#i2cget -f -y 0 0x2a 0x02 //讀取KEY寄存器0x02,值為0xa0

圖9
請按下FPGA端用戶輸入按鍵KEY9并保持按下狀態,再執行如下命令。

Target#i2cget -f -y 0 0x2a 0x02 //讀取KEY寄存器0x02,值為0x60

圖10
基于Linux的SPI通信案例
案例功能基于Linux系統,實現T3(ARM Cortex-A7)與FPGA的SPI通信功能。

ARM端案例源碼為“4-軟件資料\Demo\module-demos\spi_rw”,實現SPI Master功能,具體如下:
(1)打開SPI設備節點,如:/dev/spidev0.1。
(2)使用ioctl配置SPI總線,如SPI總線極性和相位、通信速率、數據長度等。
(3)選擇模式為單線模式或雙線模式。當設置SPI總線為雙線模式時,發送數據為單線模式,接收數據為雙線模式。
(4)發送數據至SPI總線,以及從SPI總線讀取數據。
校驗數據,然后打印讀寫速率、誤碼率。

FPGA端案例源碼為“4-軟件資料\Demo\fpga-demos\dram_spi”和“4-軟件資料\Demo\fpga-demos\dram_spi_dual”,實現SPI Slave功能,具體說明如下:(1)將SPI Master發送的數據保存至DRAM。(2)SPI Master發起讀數據時,FPGA從DRAM讀取數據通過SPI總線傳輸至SPI Master。當SPI總線為雙線模式時,接收數據支持雙線模式,而發送數據僅支持單線模式。
圖11 ARM端程序流程圖
案例測試評估板上電,請先加載運行FPGA端可執行程序,若進行SPI單線模式測試,請運行案例"dram_spi\bin\"目錄下的程序可執行文件;若進行SPI雙線模式測試,請運行"dram_spi_dual\bin\"目錄下的程序可執行文件。同時將ARM端可執行程序spi_rw拷貝至評估板文件系統任意目錄下。
進入評估板文件系統,執行如下命令查看新生成的spidev設備節點。

Target#ls /dev/spidev0.1

圖12
執行如下命令查詢程序命令參數。

Target#./spi_rw -h

圖13
1 SPI單線模式
1.1 功能測試
執行如下命令運行程序,ARM通過SPI總線寫入1KByte隨機數據至FPGA DRAM,然后讀出數據、進行數據校驗,同時打印SPI總線讀寫速率和誤碼率,最終實測寫速率為2.405MB/s,讀速率為2.405MB/s,誤碼率為0。如下圖所示。

Target#./spi_rw -d /dev/spidev0.1 -s 50000000 -OH -m 1 -S 1024 -c 2

參數解析:
-d:設備節點;
-s:設置通信時鐘頻率(Hz),本次測試設置SPI總線通信時鐘頻率為50MHz,則SPI單線模式理論通信速率為:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s;
-O:空閑狀態時,SCLK為高電平(CPOL=1);
-H:從第二個跳變沿開始采樣(CPHA=1);
-m:選擇模式傳輸模式(1表示單線模式,2表示雙線模式);
-S:設置傳輸數據大小,單位為Byte;
-c:循環傳輸數據包的次數。

圖14
1.2 性能測試
(1)基于50MHz時鐘頻率
執行如下命令運行程序,基于50MHz時鐘頻率、增大讀寫數據量測試SPI總線最高傳輸速率。ARM通過SPI總線寫入1MByte隨機數據至FPGA DRAM,然后讀出數據,不做數據檢驗,最后打印SPI總線讀寫速率和誤碼率,如下圖所示。

備注:本案例設計一次讀寫1KByte隨機數據至FPGA DRAM,因此誤碼率較高。

Target#./spi_rw -d /dev/spidev0.1 -s 50000000 -OH -m 1 -S 1048576 -c 2

圖15

本次測試設置SPI總線通信時鐘頻率為50MHz,則SPI單線模式理論通信速率為:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s。從上圖可知,本次實測寫速率為5.757MB/s,讀速率為5.757MB/s,接近理論通信速率。
本次測試SPI使用了DMA傳輸,測得CPU的占用率約為1%,如下圖所示。
圖16
(2)基于100MHz時鐘頻率
執行如下命令運行程序,測試基于100MHz時鐘頻率的SPI單線模式的最高通信帶寬。ARM通過SPI總線寫入1MByte隨機數據至FPGA DRAM并讀出數據,不做數據檢驗,最后打印SPI總線讀寫速率和誤碼率,如下圖所示。

備注:本次測試旨在測試SPI的最高傳輸速率,目前SPI速率最大支持50MHz時鐘頻率,當時鐘頻率配置到最大100MHz時速率會出現時序問題,現象是整體往右移了1bit。例如發送10000000,實際接收到01000000,并在測試中出現誤碼。

Target#./spi_rw -d /dev/spidev0.1 -s 100000000 -OH -m 1 -S 1048576 -c 100
圖17
根據官方數據手冊(如下圖),SPI總線通信時鐘頻率理論值最大為100MHz。本次測試設置SPI總線通信時鐘頻率為最大值100MHz,則SPI單線模式理論速率為:(100000000 / 1024 / 1024 / 8)MB/s ≈ 11.92MB/s。從上圖可知,在100MHz下實測SPI單線模式寫速率為:11.331MB/s,SPI單線模式讀速率為:11.331MB/s,接近理論通信速率。

圖18
本次測試SPI使用了DMA傳輸,測得CPU的占用率約為1%,如下圖所示。

圖19
2 SPI雙線模式
2.1 功能測試
執行如下命令運行程序,ARM通過SPI總線寫入1KByte隨機數據至FPGA DRAM,然后讀出數據、進行數據校驗,同時打印SPI總線讀寫速率和誤碼率,如下圖所示。

Target#./spi_rw -d /dev/spidev0.1 -s 50000000 -OH -m 2 -S 1024 -c 1

參數解析:
-d:設備節點;
-s:設置通信時鐘頻率(Hz),本次測試設置SPI總線通信時鐘頻率為50MHz,則SPI雙線模式理論通信速率為:(50000000 / 1024 / 1024 / 4)MB/s ≈ 11.92MB/s;
-O:空閑狀態時,SCLK為高電平(CPOL=1);
-H:從第二個跳變沿開始采樣(CPHA=1);
-m:選擇模式傳輸模式(1表示單線模式,2表示雙線模式);
-S:設置傳輸數據大小,單位為Byte;
-c:循環傳輸數據包的次數。

圖20

從上圖可知,本次實測寫速率為2.577MB/s,讀速率為5.222MB/s,誤碼率為0。

2.2 性能測試
(1)基于50MHz時鐘頻率
執行如下命令運行程序,基于50MHz時鐘頻率、增大讀寫數據量測試SPI總線最高傳輸速率。ARM通過SPI總線寫入1MByte隨機數據至FPGA DRAM,然后讀出數據,不做數據檢驗,最后打印SPI總線讀寫速率和誤碼率,最終本次實測寫速率為5.892MB/s,讀速率為11.365MB/s。如下圖所示。

備注:本案例設計一次讀寫1KByte隨機數據至FPGA DRAM,因此誤碼率較高。

Target#./spi_rw -d /dev/spidev0.1 -s 50000000 -OH -m 2 -S 1048576 -c 1

圖21
本次測試設置SPI總線通信時鐘頻率為50MHz,則SPI單線模式理論通信速率為:(50000000/1024/1024/8)MB/s ≈ 5.96MB/s;SPI雙線模式理論通信速率為:(50000000 / 1024 / 1024 / 4)MB/s ≈ 11.92MB/s。

本次測試SPI使用了DMA傳輸,測得CPU的占用率約為0%,如下圖所示。

圖22
(2)基于100MHz時鐘頻率

執行如下命令運行程序,測試基于100MHz時鐘頻率的SPI雙線模式的最高通信帶寬。ARM通過SPI總線寫入1MByte隨機數據至FPGA DRAM并讀出數據,不做數據檢驗,最后打印SPI總線讀寫速率和誤碼率,最終在100MHz下實測SPI雙線模式寫速率為:11.684MB/s,SPI雙線模式讀速率為:23.432MB/s。如下圖所示。

備注:本次測試旨在測試SPI的最高傳輸速率,目前SPI速率最大支持50MHz時鐘頻率,當時鐘頻率配置到最大100MHz時速率會出現時序問題,現象是整體往右移了1bit。例如發送10000000,實際接收到01000000,并在測試中出現誤碼。

Target#./spi_rw -d /dev/spidev0.1 -s 100000000 -OH -m 2 -S 1048576 -c 100
圖23
根據官方數據手冊(如下圖),SPI總線通信時鐘頻率理論值最大為100MHz。本次測試設置SPI總線通信時鐘頻率為最大值100MHz,則SPI單線模式理論通信速率為:(100000000/1024/1024/8)MB/s ≈ 11.92MB/s;SPI雙線模式理論速率為:(100000000 / 1024 / 1024 / 4)MB/s ≈ 23.84MB/s。

圖24
本次測試SPI使用了DMA傳輸,測得CPU的占用率約為0%,如下圖所示。

圖25

基于Linux-RT的SPI通信案例

案例功能:基于Linux-RT實時系統,演示T3(ARM Cortex-A7)與FPGA之間的SPI通信功能。本案例通信數據量少、帶寬低,但實時性高,適用于對通信帶寬要求不高,但通信實時性有嚴格要求的工控場合。

ARM端案例源碼為“4-軟件資料\Demo\module-demos\rt_spi_rw”,實現SPI Master功能,具體如下:
(1)打開SPI設備節點。如:/dev/spidev0.1。
(2)使用ioctl配置SPI總線。如SPI總線極性和相位、通信速率、數據字長度等。
(3)創建實時線程。
(4)發送數據至SPI總線,以及從SPI總線讀取數據。
(5)打印發送、接收的速率和傳輸耗時。
校驗數據,然后打印讀寫速率、誤碼率。

FPGA端案例源碼為“4-軟件資料\Demo\fpga-demos\dram_spi”,實現SPI Slave功能,具體如下:(1)將SPI Master發送的數據保存至DRAM。SPI Master發起讀數據時,FPGA從DRAM讀取數據并通過SPI總線傳輸至SPI Master。
圖26 ARM端程序流程圖
案例測試由于我司默認使用是的Linux內核,因此需參考Linux系統使用手冊文檔中的“替換內核、內核模塊”章節將Linux系統啟動卡替換為Linux-RT系統。

評估板上電,請先加載運行FPGA端可執行程序。將ARM端可執行文件rt_spi_rw拷貝至評估板文件系統任意目錄下,執行如下命令,查看新生成的spidev設備節點。

Target#ls /dev/spidev0.1

圖27
執行如下命令,查詢程序命令參數。

Target#./rt_spi_rw -h

圖28
1 非輪詢方式
執行如下命令運行程序,ARM通過SPI總線寫入隨機數據至FPGA DRAM,然后讀出數據、進行數據校驗,同時打印SPI總線讀寫速率、傳輸耗時和誤碼率,最終實測最小耗時為44us,最大耗時為167us,平均耗時為48us;寫速率為0.076MB/s,讀速率為0.076MB/s,誤碼率為0。如下圖所示。

Target#./rt_spi_rw -d /dev/spidev0.1 -s 50000000 -OH -S 4 -c 1024

參數解析:
-d:設備節點;
-s:設置通信時鐘頻率(Hz),本次測試設置SPI總線通信時鐘頻率為50MHz,則理論通信速率為:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s;
-O:空閑狀態時,SCLK為高電平(CPOL=1);
-H:從第二個跳變沿開始采樣(CPHA=1);
-S:設置傳輸數據大小,單位為Byte;
-c:循環傳輸數據包的次數。

圖29
2 輪詢方式
執行如下命令運行程序,ARM通過SPI總線寫入4Byte隨機數據至FPGA DRAM,讀出數據、進行數據校驗,同時打印SPI總線讀寫速率、傳輸耗時和誤碼率,最終實測最小耗時為27us,最大耗時為152us,平均耗時為30us;寫速率為0.118MB/s,讀速率為0.118MB/s,誤碼率為0。如下圖所示。

Target#./rt_spi_rw -d /dev/spidev0.1 -s 50000000 -OHp -S 4 -c 1024

參數解析:
-d:設備節點;
-s:設置通信時鐘頻率(Hz),本次測試設置SPI總線通信時鐘頻率為50MHz,則理論通信速率為:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s;
-O:空閑狀態時,SCLK為高電平(CPOL=1);
-H:從第二個跳變沿開始采樣(CPHA=1);
-p:SPI發送端采用輪詢方式(每次發送數據量≤64Byte);
-S:設置傳輸數據大小,單位為Byte;
-c:循環傳輸數據包的次數。

圖30



31.png (8.73 KB)

31.png

32.jpg (68.18 KB)

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

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 粗暴玩烂货调教| 天天色图| 日韩精品一区二区三区中文精品 | 色网免费观看| 最新亚洲国产有精品| 中文在线免费视频| 毛片视频大全| 一级女性全黄久久生活片免费| 亚洲精品www| 四虎库| 无人在线高清观看| 91成品视频| 久久6699精品国产人妻| 亚欧成人毛片一区二区三区四区 | 99久久久国产精品免费蜜臀| 久热在线这里只有精品7| 亚洲视频福利| 日本国产视频| 天堂网视频| 91极品蜜桃臀在线播放| 青青草原国产在线| 亚洲日本天堂在线| 五月天婷婷激情| 亚洲国产精品一区二区三区久久| 9420高清免费观看在线大全| 欧美特级午夜一区二区三区| 欧美激情在线精品一区二区| 奇米色777欧美一区二区| 婷婷影院在线观看| 一级毛片免费观看| 老师别揉我胸啊嗯小说| 欲奴第一季在线观看全集| 亚洲精品在线观看91| 亚洲日韩精品欧美一区二区| 中文字幕第一页在线视频| 日韩精品一区二区亚洲AV观看| 网站三级| 婷婷草| 再向虎山行1-40集免费播放| 精品无码久久久久久久久| 欧美精品免费一区欧美久久优播|