我看到有些TFT屏的FSMC的定义:
#define LCD_BASE ((u32)(0x6C000000 | 0x000007FE))
#define LCD ((LCD_TypeDef *) LCD_BASE)
但是有些又不是上面的这个地址,请问这个地址是不是只要定义在bank1里面的任意地址都可以还是有什么其他的依据来定义的 ????????????
有的也定义为:
#define LCD_DAT ((u32)(0x6C000000))
#define LCD_CMD ((u32)(0x60020000))
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
看来搞不懂的大有人在哦。。。。。。。。。。。。。。。。。。
我现在搞清楚是怎么回事了,具体说明如下:
RS连到a10 偏移地址是 10 + 1 + 1 = 12bit 【1000 0000 0000 】
= 0x00000800 | bankx-addr(x是BANK的那个块的基址)
RS连到a16 偏移地址是 16 + 1 + 1 = 18bit 【10 0000 0000 0000 0000 】
= 0x00020000 | bankx-addr(x是BANK的那个块的基址)
SR连到a23 偏移地址是 23 + 1 + 1 = 25bit 【1 0000 0000 0000 0000 0000 0000】
= 0x01000000 | bankx-addr(x是BANK的那个块的基址)
第一个加1,是因为FSMC的16位地址要对应HADDR的16位地址
后一个加1,是因为数据要左移一位
---------------------------------------------------------------------------------------------------------------------------------------------------
原子大哥的是右移一位
右移一位来计算的(如果是右移,则后一个1是不用加的)如下
RS连接到A10 偏移地址是10+1 = 11111111110 = 0X7FE , 其他AXX的偏移地址如果是右移一位,则以次类推即可。
---------------------------------------------------------------------------------------------------------------------------------------------------
按照此方法,可以试一试看是否有效?????????????
不管是左移还是右移,他们取的参考物不同,但是最终的结果都是一样的(都能够驱动TFT屏)。
---------------------------------------------------------------------------------------------------------------------------------------------------
也可以参考下面关于TFT-FSMC的介绍:
http://wenku.baidu.com/view/63a5c940a8956bec0975e35a.html
一周热门 更多>