DCMI的DMA函数DMA_SetCurrDataCounter

2019-07-21 01:25发布

参考探索者板子上的摄像头试验做的修改

外挂了一个和探索者板子同型号的1M字节的外部SRAM
将摄像头的数据开在外部SRAM中

问题出在jpeg_buf_size上

#define jpeg_buf_size 31*1024   
__align(4) u32 jpeg_buf[jpeg_buf_size];

我为了输出640*480的RGB565图片将这里的jpeg_buf_size修改为160*1024
这样就导致了程序中调用这个函数
DMA_SetCurrDataCounter(DMA2_Stream1,jpeg_buf_size )
时出现了整形转换的警告

这是因为
void DMA_SetCurrDataCounter(DMA_Stream_TypeDef* DMAy_Streamx, uint16_t Counter)
第二个参数Counter是16位的,这样就使得jpeg_buf_size 要小于65535

我尝试将Counter这个参数修改为32位的,但不能正常传输,估计这个参数和DMA的底层机制有关联。

请教大家我要怎么处理这种情况?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
正点原子
1楼-- · 2019-07-21 01:59
设置传输长度为1字节即可。然后内存地址自增。
参考我们例程在lcd上显示的设置。
tuzihog
2楼-- · 2019-07-21 02:38
 精彩回答 2  元偷偷看……
三叶草
3楼-- · 2019-07-21 06:03
是不是可以考虑
三叶草
4楼-- · 2019-07-21 08:30
 精彩回答 2  元偷偷看……
tuzihog
5楼-- · 2019-07-21 13:24
 精彩回答 2  元偷偷看……
tuzihog
6楼-- · 2019-07-21 13:28
找到方法:
Double Buffer mode
尝试下,看能不能解决问题

一周热门 更多>