【讨论】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
1楼-- · 2019-12-17 01:28
已有结论了,没人看我楼上的结论?
aohaijun
2楼-- · 2019-12-17 04:25
我之前试过用36m读w25x40,然后用串口发送,两者都用的dma通道1,spi usart 不同一时间工作

虽然有优先及之分,但这个优先及是不抢占试的?还是指同一时间占用通道的优先级别
yangwen001
3楼-- · 2019-12-17 09:14
STM32的SPI很奇怪,就算不使用DMA也不使用中断,速度只设置成4Mbps,不检测RX标志,只检测TX标志,接收到数据很快就会错位
snoopyzz
4楼-- · 2019-12-17 10:22
回复【14楼】aohaijun  
-----------------------------------------------------------------------

不同时工作是没问题的...出问题就出在DMA 大体上需要在同一时间段工作时 ...
比如说,我在正从spi flash用DMA读取数据时...这时USART有数据传来...或者定时中断到了,启动了ADC的DMA....
cddyy
5楼-- · 2019-12-17 15:27
 精彩回答 2  元偷偷看……
snoopyzz
6楼-- · 2019-12-17 19:23
回复【17楼】cddyy  
-----------------------------------------------------------------------

数据手册哪里规定了最高4分频???我要是早看到就没这么多弯路了....

一周热门 更多>