STM32使用串口+DMA接收不定长的超大数据,处理方法?

2019-08-17 00:20发布

STM32F103中等容量的芯片,RAM为20K。但是我要接收上位机PC传送来的TFT屏的显示图片数据(约300K字节),然后存储到外部FLAHS中:使用串口USART2+DMA方式接收数据,使用SPI方式存储和读取FLASH中的数据到TFT屏。
由于受芯片RAM的限制,没有那么大的RAM来存储接收的数据,所以针对此情况,有什么方法来处理啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
msq001
1楼-- · 2019-08-17 23:17
阳光2260 发表于 2017-7-14 15:17
这样的话,时间就更慢了

..........哪里会慢了?
阳光2260
2楼-- · 2019-08-18 03:27
Owen 发表于 2017-7-14 15:17
我觉得你可以试试DMA循环模式。开个几K的缓冲区,UART循环着往里写,SPI循环着往外读。但是这样需要两个标 ...

你好,我仔细想了一下你说的方法,有点困难。
主要是速度的问题,如果控制好速度的话,应该没问题。
DMA不需要CPU,直接后台就可以接收,万一SPI还没来得及处理数据,DMA接收的数据就会覆盖之前的数据的。
Owen
3楼-- · 2019-08-18 03:47
阳光2260 发表于 2017-7-14 15:33
你好,我仔细想了一下你说的方法,有点困难。
主要是速度的问题,如果控制好速度的话,应该没问题。
DM ...

所以缓冲区不能太小。我觉得可以考虑配合定时器。把SPI的速度开的非常快,然后每次计时一定值之后开启SPI读走缓冲区中的数据。只要定时器的间隔小于UART填满缓冲区所需时间的一半应该就可以做到UART写一半,SPI读另外一半。当然定时间隔不能太短,不然SPI读不完。

一周热门 更多>