FlexIO 支持 1/2/4/8/16/32位并行传输,参考寄存器 SHIFTCFT[PWIDTH]进行设置。
FLEXIO1 和 FLEXIO2/3 参数不是完全相同,FLEXIO1有16个引脚,而 FLEXIO2/3 有 32个引脚。在i.MX RT1060用户手册中,DMA MUX映射没有FLEXIO3,只有FLEXIO1和FLEXIO2。DMA外设无法访问FlexIO3模块,因此,如果需要DMA功能,只能使用FlexIO1和FlexIO2。
为此 SDK提供了 Flexio和 Flexio3的例程。
如果没有可用的 Flexio实现SPI,可以使用硬件的 LPSPI接口,支持dma,可以降低CPU运行的负荷。LPSPI的时钟 Fsck速率只有 15Mhz。
FlexIO 不能在同一周期内移动和存储。例如当尝试使用 FlexIO实现SPI从设备时,将发现它无法在同一周期内移动和存储。时钟的下降沿不用于锁存最后的数据位。一种解决方法是使用其他定时器计数数字位并产生禁用信号。然而,它有两个限制:1)需要知道传输速率,并设置此定时器具有相同的波特率。2) 它需要传输是异步的,没有任何时钟拉伸;否则,将导致失败。因此,从器件接收不是同步的。
使用示波器测量SPI信号,MISO 接收和MOSI 发送数据,但在DMA缓冲区中,数据向右移动了1位。FLEXIO接口模拟具有DMA的SPI通信,将CPHA配置为1,在第二边缘采样(在下降边缘锁定)。FLEXIO源时钟CLK选择120MHz,FLEXIO_SPI CLK设置为20MHz,数据在下降沿采样。
masterconfig->enablemaster =true;
masterConfig->enableIndoze =false;
masterConfig->enableIndebug =true;
masterConfig->baudRate_Bps =20000000U;
masterConfig->phase =kFLEXIO_SPI_ClockPhaseSecondEdge;
masterConfig->dataMode =kFLEXIO_SPI_8BITMode;
备注:如设置大于20Mhz 时钟频率,主机端实际接收数据一个字节总是被接收/存储两次。
审核编辑:汤梓红
-
示波器
+关注
关注
113文章
6194浏览量
184526 -
寄存器
+关注
关注
31文章
5322浏览量
120020 -
SPI
+关注
关注
17文章
1701浏览量
91333 -
定时器
+关注
关注
23文章
3241浏览量
114482 -
SDK
+关注
关注
3文章
1026浏览量
45779
原文标题:MIMXRT1060 FLEXIO SPI 速率
文章出处:【微信号:嵌入式 MCU,微信公众号:嵌入式 MCU】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论