金牌会员
 
- 积分
- 2115
- 金钱
- 2115
- 注册时间
- 2011-9-3
- 在线时间
- 121 小时
|

楼主 |
发表于 2011-11-10 21:58:09
|
显示全部楼层
请教:使用BANK1-> SRAM1 A16控制RS。两种方法设置,如下:方法一:
#define LCD_DATA ((u32)0x60020000) //disp Data ADDR
#define LCD_CMD ((u32)0x60000000) //disp Reg ADDR
方法二:
//LCD地址结构体
typedef struct
{
u16 LCD_REG;
u16 LCD_RAM;
} LCD_TypeDef;
//使用NOR/SRAM的 BANK1 SRAM1,地址位HADDR[27,26]=00 A16作为数据命令区分线 ,
//注意设置时STM32内部会右移一位对其! 111110=0X3E
#define LCD_BASE ((u32)(0x60000000|0x0001FFFE)) // A16
#define LCD ((LCD_TypeDef *) LCD_BASE)
然后相应的改读写函数,如下:
//方法一的写寄存器函数
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
{
*(volatile u16 *) (LCD_CMD) = LCD_Reg;//写入要写的寄存器序号
*(volatile u16 *) (LCD_DATA) = LCD_RegValue;//写入数据
}
//方法二的写寄存器函数
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
{
LCD->LCD_REG = LCD_Reg;//写入要写的寄存器序号
LCD->LCD_RAM = LCD_RegValue;//写入数据
}
也就是把*(volatile u16 *) (LCD_CMD) 替换为LCD->LCD_REG , *(volatile u16 *) (LCD_DATA) 替换为LCD->LCD_RAM ,其它 设置以及代码完全一样,但用方法一的LCD-9325可以正常显示,用方法二的不能正常显示,但读出的ID是正常的,既然方法二的读出ID是正常的,为什么显示不正常的呢?
PS:IC为STM32F103VET6 请教了,谢谢。 |
|