OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6553|回复: 4

在原子发表的帖子:FSMC驱动LCD(寄存器版) 中的是如何区分命令地址和数据地址的呢?

[复制链接]

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2011-7-8
在线时间
2 小时
发表于 2012-2-11 18:42:48 | 显示全部楼层 |阅读模式
//LCD地址结构体
typedef struct
{
u16 LCD_REG;
u16 LCD_RAM;
} LCD_TypeDef;
//使用NOR/SRAM的 BANK 4,地址位HADDR[27,26]=11 A10作为数据命令区分线 
//注意设置时STM32内部会右移一位对其! 111110=0X3E    
#define LCD_BASE        ((u32)(0x60000000 | 0x0C0007FE)) // 
#define LCD             ((LCD_TypeDef *) LCD_BASE)


void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
{
LCD->LCD_REG = LCD_Reg;//写入要写的寄存器序号  
LCD->LCD_RAM = LCD_RegValue;//写入数据      
}


//////////////////////////////////////////////////////////////////////////////

以上程序片段是摘自原子的代码,以下是我个人的理解,请鉴定对否!

LCD->LCD_REG = LCD_Reg;        //这个语句操作时,对外的地址指针是 0x6C0007FE ,因为A10在地址线上的映射是 PG0脚,PG0接到LCD的A0(或RS)脚,bit10为1那么A0(或RS)脚电平为高;
LCD->LCD_RAM = LCD_RegValue;   //这个语句操作时,因为结构体指针运算的关系,对外的地址指针是0x6C000800,那么A10接到LCD的A0(或RS)脚的电平就为低了。。。






正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-11 21:53:04 | 显示全部楼层
回复【楼主位】wcjaglzf:
---------------------------------
是这样的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2011-7-8
在线时间
2 小时
 楼主| 发表于 2012-2-15 16:06:51 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢。。
回复 支持 反对

使用道具 举报

25

主题

163

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2012-4-29
在线时间
38 小时
发表于 2013-7-25 09:31:56 | 显示全部楼层
LCD->LCD_REG = LCD_Reg;        //这个语句操作时,对外的地址指针是 0x6C0007FE ,因为A10在地址线上的映射是 G0脚,PG0接到LCD的A0(或RS)脚,bit10为1那么A0(或RS)脚电平为高;
LCD->LCD_RAM = LCD_RegValue;   //这个语句操作时,因为结构体指针运算的关系,对外的地址指针是0x6C000800,那么A10接到LCD的A0(或RS)脚的电平就为低了。。。
====================================================
这里讲的不对,因为采用了字模式,A10对应的是AHB总线的bit11,而不是bit10,看下0x6C0007FE -->110110000000000 0000 0111 1111 1110,bit11是0,这样A10输出的是低电平,这样才与结构体的命名定义REG相符,因为RS为低的时候,是读写命令。
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2017-9-19
在线时间
34 小时
发表于 2018-1-26 15:41:08 | 显示全部楼层
我在想,如果改成0X6C00 07FF,  LCD->LCD_REG地址是0X6C00 07FF,LCD->LCD_RAM地址是0X6C00 8001,这样按理说不是也没问题吗?
我测试,发现这样改不行!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 07:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表