DMA_DeInit(DMA2_Channel5); //将DMA的通道1寄存器重设为缺省值
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)FlappyBird_Frame; //DMA外设ADC基地址
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)0X6C000800; //DMA内存基地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
各位大佬,(战舰v3的板子,片选接的是A10)我想问一下我把液晶屏当作FSMC的SRAM3区l来用,DMA用来把液晶的数据丢给一个数组,这个DMA的内存基地址,不应该是(u32)0X6C000400
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
b:而因为FSMC用的是第一块 片选CS又是接NE4就是第四区所以基地址为0x6c000000
c:向这个地址写数据 就是向SARM的这个地址写数据 FSMC就会自动把数据从数据线传过去
d:那么定义一个结构 包含两个成员一个是REG就是命令 一个RAM就是数据 因为LCD接的数据宽度是16位 所以这两个成员都是16位的即占2个字节 每个成员占内存2个地址
e: 由以上 可以设置这个结构在内存上的地址(16位宽的LCD 地址对应要移动1位 即A10是地址上的位11):
110 1100 0000 0000 0000 1000 0000 0000 写数据RAM存这:0x6c000800
110 1100 0000 0000 0000 0111 1111 1110 写命令REG存这:0x6c0007FE
所以可以得到这个结构体的定义 (按结构体排列规则 第一个成员的地址比后面的小)
typedef struct
{
u16 LCD_REG; 地址是0x6c0007FE
u16 LCD_RAM; 地址是0x6c000800
}LCD_TypeDef
一周热门 更多>