91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

全國(guó)產(chǎn)T3+FPGA的SPI與I2C通信方案分享

Tronlong創(chuàng)龍科技 ? 來源:Tronlong創(chuàng)龍科技 ? 作者:Tronlong創(chuàng)龍科技 ? 2024-02-06 10:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

近年來,隨著中國(guó)新基建、中國(guó)制造2025規(guī)劃的持續(xù)推進(jìn),單ARM處理器越來越難勝任工業(yè)現(xiàn)場(chǎng)的功能要求,特別是如今能源電力、工業(yè)控制、智慧醫(yī)療等行業(yè),往往更需要ARM + FPGA架構(gòu)的處理器平臺(tái)來實(shí)現(xiàn)例如多路/高速AD采集、多路網(wǎng)口、多路串口、多路/高速并行DI/DO、高速數(shù)據(jù)并行處理等特定功能,因此ARM + FPGA架構(gòu)處理器平臺(tái)愈發(fā)受市場(chǎng)歡迎。


因此,創(chuàng)龍科技一年前正式推出了國(guó)產(chǎn)化率100%的ARM + FPGA工業(yè)核心板,它基于全志T3 +紫光同創(chuàng)Logos處理器設(shè)計(jì)。

全志T3為準(zhǔn)車規(guī)級(jí)芯片,四核ARM Cortex-A7架構(gòu),主頻高達(dá)1.2GHz,支持雙路網(wǎng)口、八路UART、SATA大容量存儲(chǔ)接口,同時(shí)支持4路顯示、GPU以及1080P H.264視頻硬件編解碼。另外,創(chuàng)龍科技已在T3平臺(tái)適配國(guó)產(chǎn)嵌入式系統(tǒng)翼輝SylixOS,真正實(shí)現(xiàn)軟硬件國(guó)產(chǎn)化。


紫光同創(chuàng)Logos PGL25G/PGL50G FPGA在工業(yè)領(lǐng)域應(yīng)用廣泛,邏輯資源分別為27072/51360,與國(guó)外友商產(chǎn)品pin to pin兼容,主要用于多通道/高速AD采集或接口拓展。因其價(jià)格低、質(zhì)量穩(wěn)定、開發(fā)環(huán)境易用等優(yōu)點(diǎn),受到工業(yè)用戶的廣泛好評(píng)。尤其是開發(fā)環(huán)境,最快3天可完成從國(guó)外友商產(chǎn)品到紫光同創(chuàng)產(chǎn)品的切換。

wKgaomXBkqKAfoX7AADt7RF7KLM774.png

圖1 ARM + FPGA典型應(yīng)用場(chǎng)景

SPI通信優(yōu)勢(shì)與應(yīng)用場(chǎng)景

SPI(Serial Peripheral Interface)是一種用于串行數(shù)據(jù)傳輸?shù)耐ㄐ艆f(xié)議,SPI通信具有帶寬高、實(shí)時(shí)性強(qiáng)、傳輸速度快、連接簡(jiǎn)單、可靠性高和靈活性強(qiáng)等優(yōu)勢(shì)。


SPI協(xié)議適用于許多嵌入式系統(tǒng)和外圍設(shè)備之間的通信需求,可提供快速、可靠和靈活的數(shù)據(jù)傳輸,非常適合“小數(shù)據(jù)-低時(shí)延”和“大數(shù)據(jù)-高帶寬”的應(yīng)用場(chǎng)景。

wKgaomXBkraAcYS7AAAde1IdMME597.png

圖2SPI通信總線

I2C通信優(yōu)勢(shì)和應(yīng)用場(chǎng)景

I2C(Inter-Integrated Circuit)是一種串行雙向通信協(xié)議,I2C通信具有硬件資源需求低、簡(jiǎn)單靈活、可靠性高和支持多種設(shè)備類型等優(yōu)勢(shì)。


I2C協(xié)議可提供簡(jiǎn)單、可靠和靈活的數(shù)據(jù)傳輸。它廣泛應(yīng)用于各種傳感器、存儲(chǔ)設(shè)備、顯示設(shè)備和通信模塊等領(lǐng)域。適用控制命名傳輸和系統(tǒng)配置的應(yīng)用場(chǎng)景。

wKgaomXBks2AcqyVAACuGUf4tHg267.png

圖3I2C通信總線


國(guó)產(chǎn)T3+FPGA的SPI與I2C通信方案介紹

本章節(jié)主要介紹全志科技T3與紫光同創(chuàng)Logos基于SPI、I2C的ARM + FPGA通信方案,使用的硬件平臺(tái)為:創(chuàng)龍科技TLT3F-EVM工業(yè)評(píng)估板。

I2C通信案例

案例功能:

實(shí)現(xiàn)T3(ARM Cortex-A7)與FPGA的TWI(I2C)通信功能。

FPGA案例源碼為“4-軟件資料Demofpga-demoi2c_slave”,實(shí)現(xiàn)I2C Slave功能,并內(nèi)置用戶可讀寫寄存器、LED寄存器、KEY寄存器。

ARM端作為I2C Master,可通過TWI(I2C)總線讀寫FPGA端用戶可讀寫寄存器0x00、LED寫寄存器0x01(寫1則點(diǎn)亮FPGA端LED,寫0則熄滅),以及查看KEY寄存器0x02檢測(cè)FPGA端用戶輸入按鍵狀態(tài)。

案例測(cè)試:評(píng)估板上電,請(qǐng)先加載運(yùn)行FPGA端可執(zhí)行程序。執(zhí)行如下命令可查看到I2C總線上的掛載設(shè)備,其中0x2a為FPGA端I2C Slave的地址。


Target#echo "1 4 1 7" > /proc/sys/kernel/printk //屏蔽內(nèi)核printk打印,避免I2C驅(qū)動(dòng)掃描找不到設(shè)備時(shí)打印警告信息

Target#i2cdetect -r -y 0


wKgZomXBktuAQlykAAAPZW8FKBI119.png

圖4

執(zhí)行如下命令,讀寫FPGA端用戶可讀寫寄存器0x00。


Target#i2cset -f -y 0 0x2a 0x00 0x55 //往寄存器0x00寫0x55

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

wKgaomXBkuOAIMBQAAAGj9uCkUI844.png

圖5


執(zhí)行如下命令,寫FPGA端LED寄存器0x01,實(shí)現(xiàn)對(duì)FPGA端用戶可編程指示燈控制。


Target#i2cset -f -y 0 0x2a 0x01 0xc0 //往LED寄存器0x01寫0xc0,點(diǎn)亮FPGA端LED3、LED4

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

wKgZomXBku2AOFG4AAAGRystjAc109.png

圖6


執(zhí)行如下命令,讀FPGA端KEY寄存器0x02,實(shí)現(xiàn)對(duì)FPGA端用戶輸入按鍵的狀態(tài)檢測(cè)。


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

wKgaomXBkvmAOY_LAAAF6hKui28694.png

圖7


請(qǐng)按下FPGA端用戶輸入按鍵KEY7并保持按下狀態(tài),再執(zhí)行如下命令。


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

wKgaomXBkwGAA9anAAAF3iaBxPw806.png

圖8


請(qǐng)按下FPGA端用戶輸入按鍵KEY8并保持按下狀態(tài),再執(zhí)行如下命令。


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

wKgZomXBkw-AEswaAAAF2pdKu3M028.png

圖9

請(qǐng)按下FPGA端用戶輸入按鍵KEY9并保持按下狀態(tài),再執(zhí)行如下命令。


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

wKgaomXBkxWAZQf3AAAGArivwb0741.png

圖10

基于Linux的SPI通信案例

案例功能:基于Linux系統(tǒng),實(shí)現(xiàn)T3(ARM Cortex-A7)與FPGA的SPI通信功能。


ARM端案例源碼為“4-軟件資料Demomodule-demosspi_rw”,實(shí)現(xiàn)SPI Master功能,具體如下:

(1)打開SPI設(shè)備節(jié)點(diǎn),如:/dev/spidev0.1。

(2)使用ioctl配置SPI總線,如SPI總線極性和相位、通信速率、數(shù)據(jù)長(zhǎng)度等。

(3)選擇模式為單線模式或雙線模式。當(dāng)設(shè)置SPI總線為雙線模式時(shí),發(fā)送數(shù)據(jù)為單線模式,接收數(shù)據(jù)為雙線模式。

(4)發(fā)送數(shù)據(jù)至SPI總線,以及從SPI總線讀取數(shù)據(jù)。

校驗(yàn)數(shù)據(jù),然后打印讀寫速率、誤碼率。


FPGA端案例源碼為“4-軟件資料Demofpga-demosdram_spi”和“4-軟件資料Demofpga-demosdram_spi_dual”,實(shí)現(xiàn)SPI Slave功能,具體說明如下:(1)將SPI Master發(fā)送的數(shù)據(jù)保存至DRAM。(2)SPI Master發(fā)起讀數(shù)據(jù)時(shí),F(xiàn)PGA從DRAM讀取數(shù)據(jù)通過SPI總線傳輸至SPI Master。當(dāng)SPI總線為雙線模式時(shí),接收數(shù)據(jù)支持雙線模式,而發(fā)送數(shù)據(jù)僅支持單線模式。

wKgaomXBkyGAc6HHAAA0rFG9eBY280.png

圖11

ARM端程序流程圖

案例測(cè)試:

評(píng)估板上電,請(qǐng)先加載運(yùn)行FPGA端可執(zhí)行程序,若進(jìn)行SPI單線模式測(cè)試,請(qǐng)運(yùn)行案例"dram_spibin"目錄下的程序可執(zhí)行文件;若進(jìn)行SPI雙線模式測(cè)試,請(qǐng)運(yùn)行"dram_spi_dualbin"目錄下的程序可執(zhí)行文件。同時(shí)將ARM端可執(zhí)行程序spi_rw拷貝至評(píng)估板文件系統(tǒng)任意目錄下。

進(jìn)入評(píng)估板文件系統(tǒng),執(zhí)行如下命令查看新生成的spidev設(shè)備節(jié)點(diǎn)。


Target#ls /dev/spidev0.1

wKgZomXBkyqABdsVAAAGIewi9ik254.png

圖12


執(zhí)行如下命令查詢程序命令參數(shù)。


Target#./spi_rw -h


wKgZomXBky-AJ7sUAAApuyBSSQI840.png

圖13


1SPI單線模式


1.1功能測(cè)試


執(zhí)行如下命令運(yùn)行程序,ARM通過SPI總線寫入1KByte隨機(jī)數(shù)據(jù)至FPGA DRAM,然后讀出數(shù)據(jù)、進(jìn)行數(shù)據(jù)校驗(yàn),同時(shí)打印SPI總線讀寫速率和誤碼率,最終實(shí)測(cè)寫速率為2.405MB/s,讀速率為2.405MB/s,誤碼率為0。如下圖所示。


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


參數(shù)解析:

-d:設(shè)備節(jié)點(diǎn);

-s:設(shè)置通信時(shí)鐘頻率(Hz),本次測(cè)試設(shè)置SPI總線通信時(shí)鐘頻率為50MHz,則SPI單線模式理論通信速率為:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s;

-O:空閑狀態(tài)時(shí),SCLK為高電平(CPOL=1);

-H:從第二個(gè)跳變沿開始采樣(CPHA=1);

-m:選擇模式傳輸模式(1表示單線模式,2表示雙線模式);

-S:設(shè)置傳輸數(shù)據(jù)大小,單位為Byte;

-c:循環(huán)傳輸數(shù)據(jù)包的次數(shù)。

wKgaomXBkziAaIwKAAARktbMZKk558.png

圖14


1.2性能測(cè)試


(1)基于50MHz時(shí)鐘頻率


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


備注:本案例設(shè)計(jì)一次讀寫1KByte隨機(jī)數(shù)據(jù)至FPGA DRAM,因此誤碼率較高。


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

wKgZomXBkz-ABdA3AAAS8nKJVV4548.png

圖15


本次測(cè)試設(shè)置SPI總線通信時(shí)鐘頻率為50MHz,則SPI單線模式理論通信速率為:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s。從上圖可知,本次實(shí)測(cè)寫速率為5.757MB/s,讀速率為5.757MB/s,接近理論通信速率。

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

wKgZomXBk0aAJGgDAABr-ir_E8o691.png

圖16


(2)基于100MHz時(shí)鐘頻率


執(zhí)行如下命令運(yùn)行程序,測(cè)試基于100MHz時(shí)鐘頻率的SPI單線模式的最高通信帶寬。ARM通過SPI總線寫入1MByte隨機(jī)數(shù)據(jù)至FPGA DRAM并讀出數(shù)據(jù),不做數(shù)據(jù)檢驗(yàn),最后打印SPI總線讀寫速率和誤碼率,如下圖所示。


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


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

wKgZomXBk1GAOLtuAAASrpPikPM450.png

圖17

根據(jù)官方數(shù)據(jù)手冊(cè)(如下圖),SPI總線通信時(shí)鐘頻率理論值最大為100MHz。本次測(cè)試設(shè)置SPI總線通信時(shí)鐘頻率為最大值100MHz,則SPI單線模式理論速率為:(100000000 / 1024 / 1024 / 8)MB/s ≈ 11.92MB/s。從上圖可知,在100MHz下實(shí)測(cè)SPI單線模式寫速率為:11.331MB/s,SPI單線模式讀速率為:11.331MB/s,接近理論通信速率。

wKgZomXBk1eAQfEHAAGz6MRvHvc680.png

圖18


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

wKgZomXBk1-AFJPEAABdt3bZ110945.png

圖19

2SPI雙線模式


2.1功能測(cè)試


執(zhí)行如下命令運(yùn)行程序,ARM通過SPI總線寫入1KByte隨機(jī)數(shù)據(jù)至FPGA DRAM,然后讀出數(shù)據(jù)、進(jìn)行數(shù)據(jù)校驗(yàn),同時(shí)打印SPI總線讀寫速率和誤碼率,如下圖所示。


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


參數(shù)解析:

-d:設(shè)備節(jié)點(diǎn);

-s:設(shè)置通信時(shí)鐘頻率(Hz),本次測(cè)試設(shè)置SPI總線通信時(shí)鐘頻率為50MHz,則SPI雙線模式理論通信速率為:(50000000 / 1024 / 1024 / 4)MB/s ≈ 11.92MB/s;

-O:空閑狀態(tài)時(shí),SCLK為高電平(CPOL=1);

-H:從第二個(gè)跳變沿開始采樣(CPHA=1);

-m:選擇模式傳輸模式(1表示單線模式,2表示雙線模式);

-S:設(shè)置傳輸數(shù)據(jù)大小,單位為Byte;

-c:循環(huán)傳輸數(shù)據(jù)包的次數(shù)。

wKgZomXBk2eALLSCAAAWqUBe1mE808.png

圖20


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


2.2性能測(cè)試


(1)基于50MHz時(shí)鐘頻率


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


備注:本案例設(shè)計(jì)一次讀寫1KByte隨機(jī)數(shù)據(jù)至FPGA DRAM,因此誤碼率較高。


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

wKgZomXBk3CABcrpAAAaIr2i0Uc822.png

圖21


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


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

wKgZomXBk3qATJCHAABaAwqyFKs936.png

圖22

(2)基于100MHz時(shí)鐘頻率


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


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


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

wKgaomXBk4aADFQsAAAYcdWmpkA968.png

圖23

根據(jù)官方數(shù)據(jù)手冊(cè)(如下圖),SPI總線通信時(shí)鐘頻率理論值最大為100MHz。本次測(cè)試設(shè)置SPI總線通信時(shí)鐘頻率為最大值100MHz,則SPI單線模式理論通信速率為:(100000000/1024/1024/8)MB/s ≈ 11.92MB/s;SPI雙線模式理論速率為:(100000000 / 1024 / 1024 / 4)MB/s ≈ 23.84MB/s。

wKgZomXBk1eAQfEHAAGz6MRvHvc680.png

圖24


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

wKgZomXBk5SAYGJbAABcSnO8WjA913.png

圖25


基于Linux-RT的SPI通信案例


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


ARM端案例源碼為“4-軟件資料Demomodule-demosrt_spi_rw”,實(shí)現(xiàn)SPI Master功能,具體如下:

(1)打開SPI設(shè)備節(jié)點(diǎn)。如:/dev/spidev0.1。

(2)使用ioctl配置SPI總線。如SPI總線極性和相位、通信速率、數(shù)據(jù)字長(zhǎng)度等。

(3)創(chuàng)建實(shí)時(shí)線程。

(4)發(fā)送數(shù)據(jù)至SPI總線,以及從SPI總線讀取數(shù)據(jù)。

(5)打印發(fā)送、接收的速率和傳輸耗時(shí)。

校驗(yàn)數(shù)據(jù),然后打印讀寫速率、誤碼率。


FPGA端案例源碼為“4-軟件資料Demofpga-demosdram_spi”,實(shí)現(xiàn)SPI Slave功能,具體如下:(1)將SPI Master發(fā)送的數(shù)據(jù)保存至DRAM。SPI Master發(fā)起讀數(shù)據(jù)時(shí),F(xiàn)PGA從DRAM讀取數(shù)據(jù)并通過SPI總線傳輸至SPI Master。

wKgaomXBk5-AF8WbAAAnDa95lAA176.png

圖26

ARM端程序流程圖

案例測(cè)試:由于我司默認(rèn)使用是的Linux內(nèi)核,因此需參考Linux系統(tǒng)使用手冊(cè)文檔中的“替換內(nèi)核、內(nèi)核模塊”章節(jié)將Linux系統(tǒng)啟動(dòng)卡替換為L(zhǎng)inux-RT系統(tǒng)。


評(píng)估板上電,請(qǐng)先加載運(yùn)行FPGA端可執(zhí)行程序。將ARM端可執(zhí)行文件rt_spi_rw拷貝至評(píng)估板文件系統(tǒng)任意目錄下,執(zhí)行如下命令,查看新生成的spidev設(shè)備節(jié)點(diǎn)。


Target#ls /dev/spidev0.1

wKgaomXBk6WASGU-AAAGR1MDRRI699.png

圖27


執(zhí)行如下命令,查詢程序命令參數(shù)。


Target#./rt_spi_rw -h


wKgZomXBk6qAQFSRAAAqLm5G23w557.png

圖28


1非輪詢方式


執(zhí)行如下命令運(yùn)行程序,ARM通過SPI總線寫入隨機(jī)數(shù)據(jù)至FPGA DRAM,然后讀出數(shù)據(jù)、進(jìn)行數(shù)據(jù)校驗(yàn),同時(shí)打印SPI總線讀寫速率、傳輸耗時(shí)和誤碼率,最終實(shí)測(cè)最小耗時(shí)為44us,最大耗時(shí)為167us,平均耗時(shí)為48us;寫速率為0.076MB/s,讀速率為0.076MB/s,誤碼率為0。如下圖所示。


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


參數(shù)解析:

-d:設(shè)備節(jié)點(diǎn);

-s:設(shè)置通信時(shí)鐘頻率(Hz),本次測(cè)試設(shè)置SPI總線通信時(shí)鐘頻率為50MHz,則理論通信速率為:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s;

-O:空閑狀態(tài)時(shí),SCLK為高電平(CPOL=1);

-H:從第二個(gè)跳變沿開始采樣(CPHA=1);

-S:設(shè)置傳輸數(shù)據(jù)大小,單位為Byte;

-c:循環(huán)傳輸數(shù)據(jù)包的次數(shù)。

wKgaomXBk7GAOAZFAAAWyIQz500218.png

圖29


2輪詢方式


執(zhí)行如下命令運(yùn)行程序,ARM通過SPI總線寫入4Byte隨機(jī)數(shù)據(jù)至FPGA DRAM,讀出數(shù)據(jù)、進(jìn)行數(shù)據(jù)校驗(yàn),同時(shí)打印SPI總線讀寫速率、傳輸耗時(shí)和誤碼率,最終實(shí)測(cè)最小耗時(shí)為27us,最大耗時(shí)為152us,平均耗時(shí)為30us;寫速率為0.118MB/s,讀速率為0.118MB/s,誤碼率為0。如下圖所示。


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


參數(shù)解析:

-d:設(shè)備節(jié)點(diǎn);

-s:設(shè)置通信時(shí)鐘頻率(Hz),本次測(cè)試設(shè)置SPI總線通信時(shí)鐘頻率為50MHz,則理論通信速率為:(50000000 / 1024 / 1024 / 8)MB/s ≈ 5.96MB/s;

-O:空閑狀態(tài)時(shí),SCLK為高電平(CPOL=1);

-H:從第二個(gè)跳變沿開始采樣(CPHA=1);

-p:SPI發(fā)送端采用輪詢方式(每次發(fā)送數(shù)據(jù)量≤64Byte);

-S:設(shè)置傳輸數(shù)據(jù)大小,單位為Byte;

-c:循環(huán)傳輸數(shù)據(jù)包的次數(shù)。

wKgZomXBk7qAVYiwAAAX8JCo158026.png

圖30


審核編輯 黃宇


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

    關(guān)注

    1660

    文章

    22415

    瀏覽量

    636532
  • 芯片
    +關(guān)注

    關(guān)注

    463

    文章

    54017

    瀏覽量

    466321
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5608

    瀏覽量

    130013
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1885

    瀏覽量

    101295
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1556

    瀏覽量

    131263
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    I2C 為什么只要兩根線就能搞定通信?

    到目前為止,我們已經(jīng)討論了SPI通信和UART通信的基礎(chǔ)知識(shí),現(xiàn)在讓我們討論本系列的最后一個(gè)協(xié)議,即集成電路間協(xié)議(I2C)。如果您曾經(jīng)構(gòu)建過使用OLED顯示器、氣壓傳感器或陀螺儀/加
    的頭像 發(fā)表于 01-04 09:14 ?1670次閱讀
    <b class='flag-5'>I2C</b> 為什么只要兩根線就能搞定<b class='flag-5'>通信</b>?

    基于FPGAI2C控制模塊設(shè)計(jì)

    I2C_WRITE_WDATA.v模塊實(shí)現(xiàn)I2C寫時(shí)序,I2C_Controller (I2C控制器)例化了I2C_WRITE_WDATA.
    的頭像 發(fā)表于 12-26 09:48 ?5012次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>I2C</b>控制模塊設(shè)計(jì)

    基于FPGAI2C通信協(xié)議設(shè)計(jì)

    I2C(Inter-Integrated Circuit)是一種由飛利浦半導(dǎo)體(現(xiàn)為恩智浦半導(dǎo)體)在1980年代初開發(fā)的同步、串行、半雙工的總線型通信協(xié)議。主要用于近距離(同一塊印刷電路板(PCB
    的頭像 發(fā)表于 12-26 09:44 ?6153次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>I2C</b><b class='flag-5'>通信</b>協(xié)議設(shè)計(jì)

    I2C的缺點(diǎn)介紹

    上升時(shí)間變慢和潛在的信號(hào)衰減。對(duì)于長(zhǎng)距離通信,其他協(xié)議,如 UART(通用異步接收器/發(fā)送器)或 SPI(串行外設(shè)接口)可能更合適。 速度限制: 雖然 I2C 支持不同的速度模式,但其高速模式(高達(dá)
    發(fā)表于 11-27 06:10

    SPII2C、UART三種串行總線的區(qū)別與對(duì)比

    Asynchronous Receiver Transmitter:通用異步收發(fā)器) 2通信方式 SPI和UART可以實(shí)現(xiàn)全雙工,但I2C不行;
    發(fā)表于 11-20 07:19

    SPII2CI2S、UART:通信協(xié)議解釋

    ? ? ? ? 在嵌入式開發(fā)中,最常用的幾種通信接口無非就是SPI、I2C、I2S、UART。名字看起來差不多,但應(yīng)用場(chǎng)景和特性卻大不相同。為什么都叫串行
    的頭像 發(fā)表于 11-18 10:53 ?551次閱讀

    SPII2C、I2S、UART:通信協(xié)議對(duì)比表

    在嵌入式開發(fā)中,最常用的幾種通信接口無非就是SPII2CI2S、UART。名字看起來差不多,但應(yīng)用場(chǎng)景和特性卻大不相同。很多初學(xué)者容易混淆:為什么都叫串行
    的頭像 發(fā)表于 11-17 10:53 ?1753次閱讀
    <b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>、<b class='flag-5'>I2</b>S、UART:<b class='flag-5'>通信</b>協(xié)議對(duì)比表

    全國(guó)產(chǎn)SPI無線傳輸模塊技術(shù)解析與方案推薦

    一、全國(guó)產(chǎn)SPI無線模塊技術(shù)概述 1.1 國(guó)產(chǎn)化戰(zhàn)略意義 在當(dāng)前國(guó)際形勢(shì)下, 芯片國(guó)產(chǎn)化 已成為國(guó)家戰(zhàn)略重點(diǎn)。全國(guó)產(chǎn)
    的頭像 發(fā)表于 10-17 13:32 ?630次閱讀

    深入剖析I2C協(xié)議

    I2C是由Philips開發(fā)的簡(jiǎn)單的雙向兩線總線,在深入淺出理解SPI協(xié)議中,我們區(qū)分了單工,半雙工,全雙工協(xié)議數(shù)據(jù)流向的區(qū)別,根據(jù)特征,I2C協(xié)議屬于半雙工協(xié)議(即同一時(shí)刻,數(shù)據(jù)單向流動(dòng))。此外
    的頭像 發(fā)表于 08-21 15:10 ?3684次閱讀
    深入剖析<b class='flag-5'>I2C</b>協(xié)議

    I2C通信異常問題怎么解決?

    我們?cè)谶M(jìn)行I2C通信,發(fā)現(xiàn)當(dāng)寫數(shù)據(jù)時(shí)SCL和SDA會(huì)有下降沿重合的情況,導(dǎo)致通信失敗,請(qǐng)幫忙分析下如何處理? I2C通信代碼如下: sta
    發(fā)表于 08-12 07:45

    I2C總線通信,為什么要進(jìn)行電氣隔離?

    I2C總線采用雙向二線制,支持多主機(jī)多從機(jī)通信,具備高可靠性、抗干擾能力強(qiáng),廣泛應(yīng)用于嵌入式系統(tǒng)中。
    的頭像 發(fā)表于 08-11 11:04 ?2516次閱讀
    <b class='flag-5'>I2C</b>總線<b class='flag-5'>通信</b>,為什么要進(jìn)行電氣隔離?

    第十八章 I2C通信測(cè)試

    本章介紹了I2C協(xié)議,其物理層用SDA和SCL雙線,支持多設(shè)備:協(xié)議層含起始/停止信號(hào)、應(yīng)答機(jī)制等。還講解W55MH32的I2C外設(shè)及初始化,并進(jìn)行了通信測(cè)試代碼的分析。
    的頭像 發(fā)表于 06-19 17:07 ?1320次閱讀
    第十八章 <b class='flag-5'>I2C</b><b class='flag-5'>通信</b>測(cè)試

    是否有關(guān)于如何通過 I2C 總線上的 uProcessor 或 FPGA 與芯片通信的文檔?

    我們正在做一個(gè)項(xiàng)目,我們想回讀電纜中的eMarker芯片。 瀏覽不同的評(píng)估板和數(shù)據(jù)表,看來我們需要為芯片編譯代碼。 1. 芯片是否預(yù)配置了默認(rèn)固件? 2. 是否有關(guān)于如何通過 I2C 總線
    發(fā)表于 05-29 06:13

    Keil LPC1769 Evaluation Board支持SPII2C通信嗎?

    OM11084 : Keil LPC1769 Evaluation Board 支持 SPII2C 通信嗎?
    發(fā)表于 04-07 06:33

    I2C總線復(fù)用

    帝晶智慧屏I2C總線復(fù)用
    的頭像 發(fā)表于 03-11 17:20 ?2108次閱讀