|
stm32中的FSMC,ADDR[25:1]为什么不是ADDR[24:0]
[复制链接]
看了看stm32f1的FSMC部分的内容,纠结于一个无聊的问题~~
图 FSMC 内存块
如上图所示:bank = 256M = 4×64M
表 拓展内存地址
从表中可知内存中每个数据的长度可以是8位或16位,
8位:
512M = 64M×8 = 64×1024×1024 = 2^(6+10+10) ×8 = 2^26×8
数据长度为8位的时候地址总线需要26根,这就和上图中的ADDR[25:0] 26根地址线对上了,
接着映射到FSMC_A[25:0],保持低位对齐
16位:
512M =64/2M×16 = 32M×16 = 32×1024×1024×16 =2^(5+10+10) = 2^25×16
数据长度为16位的时候地址总线需要25根,这就和上图中的ADDR[25:1] 对应,映射到FSMC_A[24:0]
这样地址线就保持了低位对齐
简单点理解就是:8位和16位的SRAM的数据接口不同,
同容量的条件下(512M),8位的SRAM地址线比16位多一根(26、25)
那么在数据长度为16位的时候,为什么是ADDR[25:1] 而不是ADDR[24:0]呢?是为了方便硬件操作吗?
|
|