FSMC数据地址为RS确定
当RS=0写命令,当RS=1写数据
根据RS接线计算地址
16位模式 ADD=2的N次方×2 为什么是这样我也不清楚抄来的 可以的话解释一下
8位模式 ADD=(1<<N)
而战舰是接A10 算出来是0X800 地址是0X6C000800
//LCD地址结构体
typedef struct
{
u16 LCD_REG;
u16 LCD_RAM;
} LCD_TypeDef;
//使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A10作为数据命令区分线
//注意设置时STM32内部会右移一位对其! 111110=0X3E
#define LCD_BASE ((u32)(0x6C000000 | 0x000007FE))
#define LCD ((LCD_TypeDef *) LCD_BASE)
这个为什么是0X000007FE怎么算来的
虽然LCD_RAM地址是0X6C000800但是 LCD_REG地址是0x6c0007fe.是不是这个地址随便都行?只要在这个区域中 看到有的是0X6C000000
//在指定地址开始,连续写入n个字节.
//pBuffer:字节指针
//WriteAddr:要写入的地址
//n:要写入的字节数
void FSMC_SRAM_WriteBuffer(u8* pBuffer,u32 WriteAddr,u32 n)
{
for(;n!=0;n--)
{
*(vu8*)(Bank1_SRAM3_ADDR+WriteAddr)=*pBuffer;
WriteAddr+=2;//这里需要加2,是因为STM32的FSMC地址右移一位对其.加2相当于加1.
pBuffer++;
}
}
WriteAddr+=2;//这里需要加2,是因为STM32的FSMC地址右移一位对其.加2相当于加1.怎么解释?
存储器是存放单字节,而SRAM是16位的。这个地址变换加二是不是这样解释比较好
|