FlexIO 支持 1/2/4/8/16/32位并行傳輸,參考寄存器 SHIFTCFT[PWIDTH]進(jìn)行設(shè)置。
FLEXIO1 和 FLEXIO2/3 參數(shù)不是完全相同,F(xiàn)LEXIO1有16個(gè)引腳,而 FLEXIO2/3 有 32個(gè)引腳。在i.MX RT1060用戶手冊(cè)中,DMA MUX映射沒(méi)有FLEXIO3,只有FLEXIO1和FLEXIO2。DMA外設(shè)無(wú)法訪問(wèn)FlexIO3模塊,因此,如果需要DMA功能,只能使用FlexIO1和FlexIO2。
為此 SDK提供了 Flexio和 Flexio3的例程。
如果沒(méi)有可用的 Flexio實(shí)現(xiàn)SPI,可以使用硬件的 LPSPI接口,支持dma,可以降低CPU運(yùn)行的負(fù)荷。LPSPI的時(shí)鐘 Fsck速率只有 15Mhz。
FlexIO 不能在同一周期內(nèi)移動(dòng)和存儲(chǔ)。例如當(dāng)嘗試使用 FlexIO實(shí)現(xiàn)SPI從設(shè)備時(shí),將發(fā)現(xiàn)它無(wú)法在同一周期內(nèi)移動(dòng)和存儲(chǔ)。時(shí)鐘的下降沿不用于鎖存最后的數(shù)據(jù)位。一種解決方法是使用其他定時(shí)器計(jì)數(shù)數(shù)字位并產(chǎn)生禁用信號(hào)。然而,它有兩個(gè)限制:1)需要知道傳輸速率,并設(shè)置此定時(shí)器具有相同的波特率。2) 它需要傳輸是異步的,沒(méi)有任何時(shí)鐘拉伸;否則,將導(dǎo)致失敗。因此,從器件接收不是同步的。
使用示波器測(cè)量SPI信號(hào),MISO 接收和MOSI 發(fā)送數(shù)據(jù),但在DMA緩沖區(qū)中,數(shù)據(jù)向右移動(dòng)了1位。FLEXIO接口模擬具有DMA的SPI通信,將CPHA配置為1,在第二邊緣采樣(在下降邊緣鎖定)。FLEXIO源時(shí)鐘CLK選擇120MHz,F(xiàn)LEXIO_SPI CLK設(shè)置為20MHz,數(shù)據(jù)在下降沿采樣。
masterconfig->enablemaster =true;
masterConfig->enableIndoze =false;
masterConfig->enableIndebug =true;
masterConfig->baudRate_Bps =20000000U;
masterConfig->phase =kFLEXIO_SPI_ClockPhaseSecondEdge;
masterConfig->dataMode =kFLEXIO_SPI_8BITMode;
備注:如設(shè)置大于20Mhz 時(shí)鐘頻率,主機(jī)端實(shí)際接收數(shù)據(jù)一個(gè)字節(jié)總是被接收/存儲(chǔ)兩次。
審核編輯:湯梓紅
-
示波器
+關(guān)注
關(guān)注
113文章
6240瀏覽量
184799 -
寄存器
+關(guān)注
關(guān)注
31文章
5336瀏覽量
120232 -
SPI
+關(guān)注
關(guān)注
17文章
1706瀏覽量
91508 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3246瀏覽量
114721 -
SDK
+關(guān)注
關(guān)注
3文章
1035瀏覽量
45902
原文標(biāo)題:MIMXRT1060 FLEXIO SPI 速率
文章出處:【微信號(hào):嵌入式 MCU,微信公眾號(hào):嵌入式 MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論