Page 2 of 2

Re: 【求助】ZS系列SPI使用问题

Posted: 2025年 Jun 27日 10:45
by docker22docker

建议:
分包发送:将8K数据分成较小的包(如每次2K或更小),循环调用 SPIDRV_MTransmitB 发送。虽然会有间隔,但这是阻塞式API的正常表现。
使用非阻塞API:如果对间隔敏感,可以考虑使用 SPIDRV_MTransmit(带回调),这样可以在回调中立即启动下一包的发送,减少间隔,但仍然无法做到完全无缝衔接,因为底层硬件和驱动调度仍有影响。
硬件能力限制:实际最大包长目前仅支持2048字节。
DMA fifo的大小总有上线。对于大数据的发送,分包发送是通用且安全的做法
你的问题,是两包数据中间有5ms的间隔,目前来看,无法避免。让你使用自己控制spi片选的信号,是想让整个分包发送过程,等同于一次完整的发送数据逻辑。分块发送但保持连续性(手动控制 CS)。现在看来,你是对这个5ms的时间敏感。
目前,你对spi操作的接口,是原厂底层驱动接口。可以尝试,获取驱动源码,底层驱动改造,调试,尝试效果。


Re: 【求助】ZS系列SPI使用问题

Posted: 2025年 Jun 27日 10:48
by xiaoluo

配置:frameLength = 8就不会出现这种frameLength = 16的情况。分别测试了第一字节发送0x5A 或者0xA5,0xFF的情况,都是第一个字节第一bit在0xFC高电平输出完后低电平影响到第2Bit的数据输出

15.jpg
14.jpg