用的是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)了...这个速度有点慢了...
问问看谁有解决方法吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
回复【6楼】linghu2  令狐二中
-----------------------------------------------------------------------
和io频率有啥关系-_-
-----------------------------------------------------------------------
STM32的GPIO翻转速度最大18M,FSMC最大可以达到36M,50M是指输出驱动电路的压摆率满足50M方波需求,和IO翻转速度无关。
坛子里面有测试的
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4605481&bbs_page_no=1&search_mode=1&search_text=GPIO&bbs_id=3020
另, STM32的SPI最好让其工作在2线双工模式,不要数据也要空读(空写),不然FIFO容易数据出错.
简单点讲,写数据时加个空读.
DMA时,不用的读(或写)加个 dummy 原地踏步.
Rx还剩余一个字节没读到-_-
看来超频到36MHz是不用想了....除非只使用这SPI Rx的一个DMA...其它DMA全部不使用....
但对于我这个需要高速串口来向spi flash下载图片(下载时提高波特率到1228800,平时9600)的项目就没法用了...
这么高速的串口,不用DMA显然是不行的...不然用中断累死stm32...
一周热门 更多>