OpenEdv-开源电子网

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

看到LCD驱动的地方,这个函数没有看懂,请吧友解惑

[复制链接]

15

主题

82

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2015-4-13
在线时间
0 小时
发表于 2015-8-18 16:55:39 | 显示全部楼层 |阅读模式
5金钱
u16 LCD_ReadReg(vu16 LCD_Reg)
{   
LCD_WR_REG(LCD_Reg); //写入要读的寄存器序号
delay_us(5);  
return LCD_RD_DATA(); //返回读到的值
}  

void LCD_WR_REG(vu16 regval)
{   
regval=regval; //使用-O2优化的时候,必须插入的延时
LCD->LCD_REG=regval;//写入要写的寄存器序号  
}


u16 LCD_RD_DATA(void)
{
vu16 ram; //防止被优化
ram=LCD->LCD_RAM;
return ram;  
}

不明白的地方是把命令0x0000写进ILI9320后过了5US又读ILI9320,我在想读到的数值到底是不是地址0x0000的值啊,为什么就是0x0000地址的值呢?看了数据手册也没有搞明白(能不说英语不好么),还有就是通过D【15~0】访问ILI9320到底是访问的哪个寄存器呢,是不是每次访问都是固定访问的某个寄存器呢?希望大湿们能给指点一下哈

最佳答案

查看完整内容[请看2#楼]

时序图上写的很清楚了,将要读出的寄存器序号写入index寄存器,然后就可以读取对应寄存器的值了 看下面这句话 index寄存器指定R00~RFF或者RAM的入口,也就是你写入不同的序号,液晶控制器就读取该序号对应得寄存器内的值,并返回(其实就是传送给总线)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

401

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1769
金钱
1769
注册时间
2015-6-11
在线时间
313 小时
发表于 2015-8-18 16:55:40 | 显示全部楼层


时序图上写的很清楚了,将要读出的寄存器序号写入index寄存器,然后就可以读取对应寄存器的值了


看下面这句话 index寄存器指定R00~RFF或者RAM的入口,也就是你写入不同的序号,液晶控制器就读取该序号对应得寄存器内的值,并返回(其实就是传送给总线)

回复

使用道具 举报

15

主题

82

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2015-4-13
在线时间
0 小时
 楼主| 发表于 2015-8-19 09:26:35 | 显示全部楼层
回复【2楼】zc123:
---------------------------------
太好了,就是这儿,一直在困扰我,感谢1楼,哈哈
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-16 07:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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