用的是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)了...这个速度有点慢了...
问问看谁有解决方法吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
(原文件名:未命名.JPG)
-----------------------------------------------------------------------
把主频设为32MHz,然后2分频, SPI速度是16MHz....但仍然出错....
说明限制的并不是SPI的的频率...而是4分频....2分频根本无法正常使用
-----------------------------------------------------------------------
19L 恰恰说明了不能2分频的原因....因为DMA只有总线一半的控制时间...
2分频的话,速度刚够...但开了其它DMA,SPI就反应不过来了....
我试过很多频率了,2分频结果都一样不行...
ST的文档给的不详细,尤其是多个外设DMA情况下,各个外设占用内部的“BUS Matrix”,需要内部的仲裁,甚至会出现仲裁冲突的情况,就需要延长更多的clk来处理DMA请求了。
虽然DMA不需要cpu core来搬移数据,但它仍然占用了内部总线的,其性能,取决于“BUS Matrix”这个高速交换矩阵,和仲裁算法。
freescale的powerpc,把同时每个外设所用的最高时钟有个换算指数,换算出来根据公式加起来,不能超过一个总数;超过了说明内部不能同时处理这么多高速的外设,只能降各自外设的频率。
一周热门 更多>