Ifx Qspi长数据/长连续模式使用问题

问题记录,提问使用,欢迎大家讨论分享问题

疑问项:如何使用ILLD库的QSPI驱动

长/长连续模式下必须使用DMA传输,这里使用“SPI_DMA_1_KIT_TC275_LK”例程进行修改

一、目前使用方法

期望结果:一次传输32byte数据
主/从传输宽度需要设置为32bit,工作模式设置为长数据模式
Ifx Qspi长数据/长连续模式使用问题_第1张图片buffer宽度设置为32(默认为8)
Ifx Qspi长数据/长连续模式使用问题_第2张图片
Master与Slave 的exchange函数的形参count需要设置为实际的byte个数,所以这里需要乘以4
Ifx Qspi长数据/长连续模式使用问题_第3张图片
测试log:
只能传输16byte,排除代码后发现IfxQspi_SpiMaster_writeLong函数中在计算BACON值时,将DL值限制为16
Ifx Qspi长数据/长连续模式使用问题_第4张图片
在这里插入图片描述
修改此处为32,可以正常传输32byte,测试log如下:
在这里插入图片描述Ifx Qspi长数据/长连续模式使用问题_第5张图片

二、问题汇总

1、针对长/长连续模式,大家如何使用的?

2、为什么长/长连续模式下,DL要限制到16?是因为使用的MIXENTR方式传输,这里的限制?
答:实际可以可以限制到32(BACON.DL最大可配置为0x1F,对应32byte),这里限制为16byte,可能是为了和手册的框图对应上。
Ifx Qspi长数据/长连续模式使用问题_第6张图片
3、长连续模式下具体如何如何传输的
代码中,只有在通过IfxQspi_SpiMaster_exchange调用IfxQspi_SpiMaster_writeLong才会写一下BACON的值,其他地方未看见有写,那么后面几次如何写入的?是导致无法传输大于32byte数据的原因?

答:针对长/长连续模式下,是使用DMA进行传输的,需要按照手册(1个BACON+4个DATA,实测1个BACON+8个DATA也可以)这里的配置是通过代码的里面的buffer(DMA的源地址)先配置好,然后由CPU写入第一次配置,后续的配置与数据,通过DMA搬运完成所有数据的传输。
Ifx Qspi长数据/长连续模式使用问题_第7张图片

三、注意事项

1、QSPI最高通信速率手册给的50Mbps,使用普通的Pin脚只能达到20Mbps左右(引脚电气特性决定),若想要超过20Mbps需要使用支持LVDS Pad的Pin,TC27x中只有QSPI2支持,TC37x中QSPI2和QSPI4支持。40Mbps测试log如下:
Ifx Qspi长数据/长连续模式使用问题_第8张图片

2、初始化channel时,配置的波特率对硬件来说只是一个建议值,实际可能不是该波特率,具体波特率见g_qspiDma.spiMasterChannel.base.baudrate(g_qspiDma是变量名,见圈2,以具体工程为准)。
Ifx Qspi长数据/长连续模式使用问题_第9张图片

你可能感兴趣的:(MCU,单片机)