【讨论】stm32的SPI1跑在36MHz时, 会被其它DMA通道干扰而接收错位?

2019-12-15 12:17发布

用的是stm32f103c8t6, 倍频到72MHz,flash等待周期已设为2

spi flash是sst25vf016b,接在spi1上....从中读取16位彩图刷屏...

SPI1 二分频,即工作在36MHz...通过DMA做了双缓冲读取spiflash,并刷新到TFT(ssd1289,240*320)上,模拟时序

表现很好...35ms一屏,即28.5fps,

但是当开启USART的TX的DMA或者ADC的DMA通道后...每屏图像会出现个别彩纹(数据错位)

最后把SPI1降到18MHz(4分频), 一切工作正常了...可是每屏就需要68ms(14.7fps)了...这个速度有点慢了...

问问看谁有解决方法吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
33条回答
snoopyzz
2019-12-16 14:39
再次测试,2线双工模式 工作在36MHz也会出错...表现在Tx的DMA已经结束了,但Rx的DMA始终无法结束,观察寄存器发现
Rx还剩余一个字节没读到-_-


看来超频到36MHz是不用想了....除非只使用这SPI Rx的一个DMA...其它DMA全部不使用....
但对于我这个需要高速串口来向spi flash下载图片(下载时提高波特率到1228800,平时9600)的项目就没法用了...
这么高速的串口,不用DMA显然是不行的...不然用中断累死stm32...

一周热门 更多>