由于TFTLCD不需要地址线,所以本来随便什么数都行,但是他接到了A10上,那么A10就得控制读写了。
那么往Bank1.Sector4写的时候,只要基地址是0X6C000000,偏移的第10位为0即命令,为1即数据,其它位无所谓了。
另外往这块区域写数据时
1.地址:内部AHB总线地址相应变化,使得FSMC的A10相应变化
2.数据:写的数据对应到FSMC的D[15,0]。然后FSMC会有相应的时序将数据写到外接的TFTLCD中。
那为什么不直接这么定义呢?
#define LCD_REG (*(volatile unsigned short int *)0x6C000000)
#define LCD_RAM (*(volatile unsigned short int *)0X6C000800)
以LCD_REG为例:
其中0x6C000000对应的二进制为
0110,1100,0000,0000,0000,0000,0000,0000
只要地址满足0110,11XX,XXXX,XXXX,XXXX,0XXX,XXXX,XXXX即可(X=0或1)。
所以它文档中写0X6C0007FE肯定是可以的。
个人认为:正点那个代码可读性太差,没必要强行那么写成结构体。