HADDR
HADDR是来自AHB总线上地址线,是字节地址。连接到FSMC_A[25:0],再连接到外部的存储器,
地址线
首先明确一点,26根地址线,它是26个位。它的寻址空间或者寻址容量是2^26,单位是Byte。HADDR是字节地址,说明地址线每变一条,就对应着一个字节的地址:8位。
FSMC_A[25:0]和HADDR[25:0]的联系
正常情况下,FSMC_A和HADDR是pin对pin连接的,如果访问的SRAM数据宽度是8位,就正好很匹配。
如果SRAM的数据宽度是16位的SRAM(案例来自野火FSMC模拟8080时序访问ILI9341读写GRAM),本来HADDR一位地址对应一个字节,但是现在要求一位地址对应两个字节。
解决办法:二进制逢二进一,十位加1,个位需要加2。所以只要把HADDR的十位和FSMC_A的个位对齐即可。把HADDR让出一跟地址线,把FSMC_A[0]连接到HADDR[1],这样十位变一次,HADDR[0] 其实变化了两次,对应着两个字节。
所以到底是利用了二进制逢二进一和字节地址的关系。