我把NorFlash正常读取到一数据区Buffer0,用DMA读取NorFlash到另一数据区Buffer1,
发现数据Buffer0[0]=0x11AA,Buffer0[1]=0x19CA,Buffer0[2]=0x11CA,
Buffer1[0]=0x00AA,Buffer0[1]=0x0011,Buffer0[2]=0x00CA,Buffer1[3]=0x0019,Buffer0[4]=0x00CA,Buffer0[52]=0x0011
说明DMA读到的是字节数据,我设置明明是半字传送的,难道还有其他地方没有设置正确。
设置如下
/*******************************************************************************
* Function Name : FSMC_DMA_Init
* 功能:初始化FSMC的DMA
* 参数:PeripheralBaseAddr外设地址,即图片存储地址
BufferSize为DMA传输数据量
*******************************************************************************/
extern void DMA_NVICConfig(void);
void FSMC_DMA_Init(INT32U PeripheralBaseAddr,INT32U BufferSize)
{
DMA_InitTypeDef DMA_InitStructure;
/* DMA channel6 configuration */
DMA_DeInit(DMA1_Channel6);
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)(PeripheralBaseAddr+Bank1_NOR2_ADDR);
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)DMABuff;//(u32)TFT_DateBaseADDR;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize = BufferSize;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
// DMA_InitStructure.DMA_PeripheralDataSize = DMA_MemoryDataSize_Byte;
// DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_M2M = DMA_M2M_Enable;
DMA_Init(DMA1_Channel6, &DMA_InitStructure);
//允许发送完成中断
DMA_NVICConfig();
}
|