历史上的今天
今天是:2025年04月22日(星期二)
2018年04月22日 | stm32f4开发板驱动LCD液晶屏的个人总结
2018-04-22 来源:eefocus
研究了几天的F4的FSMC方式驱动触摸屏,得到一些认识,现在列举如下,流水帐般没有组织的记录仅供自己以后参考
使用的是一款叫微雪电子的F407的开发板,但是他们的客服却不太愿解答用户提出的问题。
触摸屏是以前购买火牛的时候带的一块LCD屏,屏上有HY32D字样,里面含有控制电路,相关硬件是SSD1289和ADS7843,SSD1289控制LCD,ADS7843通过SPI控制触摸屏。
配合开发板附带的测试代码,总是不明白FSMC的工作原理,因为没有看到如何选择哪个块,哪个区,而且硬件电路也没看很懂。
总结如下
1、NEx是四个块的第一块的4个区(每个64M)的选择信号,比如你选择FSMC_Bank1_NORSRAM4,即NE4,你要做的就是把NE4的GPIO脚设置成复用,其他就不用管了,因为这个NE4会自动控制,不需要人为控制它的高低,比如在读写数据的时候它自动会低,所以硬件上可以将这个脚跟LCD的片选CS接一起。
2、相关的还有RD、WR脚也不需要自己控制,复用完就可以了
3、还有文档里有HADDR[27:26]这个量,搞了半天,原来这货是内部的,你是看不到,控制不了的,它的意思是说第一块的四个区的选择可以表现到这2bit上,就是说,你选了NE4,HADDR[27:26]的值就是11;选了NE1,HADDR[27:26]的值就是00。
4、看下面的图,这个LCD的CS由三个脚控制,看了下这个74LVC139,发现它的规律有一项是1脚为低且2、3脚为高,7脚才为低。所以我一直没搞明白的两句代码
#define LCD_REG (*((volatile unsigned short *) 0x6F000000)) /* RS = 0 */
#define LCD_RAM (*((volatile unsigned short *) 0x6F010000)) /* RS = 1 */
就可以解释了。因为这个地址如果按手册上讲应该是可以写成0x6cxxxxxx的,为什么写成0x6F呢,就是为了把A23和A24一直拉高,所以在读写数据的时候NE4又会自动变低,这个时候的LCD_CS 就低了,此时数据读写什么的都不成问题了。其实可以看到这个地址的高8位--0x6C的后4bit是1100,其中11按照地址总线算应该是第27、26位,因为是16位宽度的,所以地址都右移了一位,那么A23和24对应的就是1100的00两位,所以是0x6F了。
5、其中一位RS比较重要,因为这个脚是读写数据或者命令的选择脚,为高写数据,为低写命令,所以地址就变成了0x6F000000和0x6F010000,因为这个电路把A15接到RS上了
史海拾趣
|
今天又帮妈找钥匙,累的一身汗。妈上了年纪,记性不好了,每次出门前都是一顿找,做电子的我感觉这也不是个难事儿,无线收发模块就能解决,钥匙上放一个发射器,再做一个接收器,上面配一个小灯,亮度或者闪烁频率表示和目标的 ...… 查看全部问答> |
|
项目描述:本公司仪器上目前是接热敏打印机打出结果,不过由于热敏打印结果时间长了就看不清楚了,所以想开发一个代替热敏打印机的小硬件单元,当按仪器上的打印按钮后,小硬件单元接收打印信息,然后通过串口或USB口等计算机接口传到计算机上保存 ...… 查看全部问答> |
|
ST又出了新的数据手册 Rev 6,其中可以看出AD精度很高,跟我以前做过的试验相符,请看,第65页:Table 46. ADC accuracy - limited test conditionsSymbol Parameter &nb ...… 查看全部问答> |
|
最近在学习使用STM32的ADC,单ADC已经调试成功了,LCD可以显示实际波形。 看到有双ADC快速交替模式,可以提高一倍的速度,就改为该模式,用二个ADC采样同一个输入。 但是无论如何都调试不出来,只有ADC1的值,没有ADC2的值。 看了论坛几乎 ...… 查看全部问答> |
|
元芳:大人,上次您给我指出了案件中的零极点分布,案情各个要素已经显露出来,但元芳还是一时还是无法理清整个案子的来龙去脉,还请大人明示! 狄:元芳,你来看。在整个反馈网络中,芯片内部的电路决定了参考电压和运放的增益,这些是在我们选择 ...… 查看全部问答> |




