21ic问答首页 - 关于用FMSC和DMA显示图片的相关问题
关于用FMSC和DMA显示图片的相关问题
nxdxm2021-08-31
在野火的stm32f407平台上面写了一个显示图片的程序,使用SDIO功能和移植的fatfs文件系统将存在SD卡中的BMP文件读取出来,然后判断数据,将数据写入两个BUFFER中,再用DMA将BUFFER里面数据传入FSMC映射的数据地址。问题是图片可以显示出来,但是图片上会有条纹,我观察了一下,感觉条纹像是显示错位了,我也DEBUG了,看了一下从SD卡中读取的数据是没有问题的,问题可能就出现在DMA传输上面,因为当我使用MCU直接去搬运数据就不会出现图片显示有条纹的问题,不知道DMA要怎样设置才能让图片显示正常,求大佬点拨。
赞0
评论
2021-09-01
赞0
评论
2021-09-01
赞0
{
DMA_InitTypeDef DMA_InitStructure = {0};
DMA_Cmd(DMA2_Stream0,DISABLE);///发送
//*********************************** 初始化DMA ***************************************//
DMA_InitStructure. DMA_Channel = DMA_Channel_0; //通道选择
DMA_InitStructure. DMA_PeripheralBaseAddr = (unsigned long)source; //数据地址//源地址
DMA_InitStructure. DMA_Memory0BaseAddr = (unsigned long)LCD_BASEADD_DATA; //存储器 0 地址////目标地址
DMA_InitStructure. DMA_DIR = DMA_DIR_MemoryToMemory; //传输方向
DMA_InitStructure. DMA_BufferSize = size; //数据数目
DMA_InitStructure. DMA_PeripheralInc = DMA_PeripheralInc_Enable; //源地址递增
DMA_InitStructure. DMA_MemoryInc = DMA_MemoryInc_Disable; //目标地址不变
DMA_InitStructure. DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; //外设数据宽度
DMA_InitStructure. DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //存储器数据宽度
DMA_InitStructure. DMA_Mode = DMA_Mode_Normal; //模式选择//一次传输
DMA_InitStructure. DMA_Priority = DMA_Priority_Low; //优先级
DMA_InitStructure. DMA_FIFOMode = DMA_FIFOMode_Enable; //FIFO 模式
DMA_InitStructure. DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; //FIFO 阈值设置为半满,也就是把char类型转成short类型
DMA_InitStructure. DMA_MemoryBurst = DMA_MemoryBurst_Single; //存储器突发传输
DMA_InitStructure. DMA_PeripheralBurst = DMA_PeripheralBurst_Single; //外设突发传输
DMA_Init(DMA2_Stream0,&DMA_InitStructure);
DMA_ITConfig(DMA2_Stream0,DMA_IT_TC,ENABLE);
// DMA_Cmd(DMA2_Stream0,ENABLE);///发送
}
评论
2021-08-31
您需要登录后才可以回复 登录 | 注册