在学习正点原子FSMC访问外部存储器时遇到的一个地址偏移问题,在这里记录一下
HADDR:来自STM32内部AHB总线上地址线。
FSMC_A[25:0]:外部存储器接口信号上的地址总线,连接TFT的数据/命令选择RS端,只用到了FSMC_A[0]。
FSMC_D[15:0]:双向数据总线,FSMC-D[0,15] -----LCD-DB[0,15]
FSMC的连接顺序是:HADDR[25:0]--->FSMC_A[25:0]--->外部的存储器
(1)当存储数据为8位时,地址各位对应FSMC_A[25:0],数据位对应FSMC_D[7:0],
FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b

(1)当存储数据为8位时,地址各位对应FSMC_A[25:1],数据位对应FSMC_D[15:0],
FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b
(2) 当舍弃HADDR[0]时,地址会向右偏移一位。此时访问u8的6c00 0000和6c00 0000相当于访问u16的0000 0000

(1)当存储数据为8位时,地址各位对应FSMC_A[25:2],数据位对应FSMC_D[32:0],
FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_32b
(2) 当舍弃HADDR[1:0]时,地址会向右偏移两位。此时访问U8的6c00 0000和6c00 0000相当于访问U32的0000 0000

本文记录了在使用STM32的FSMC访问外部存储器时,针对不同数据宽度(8, 16, 32位)时地址线和数据线的配置调整,以及地址偏移对内存寻址的影响。重点讨论了HADDR与FSMC_A信号线的关系和数据宽度设置对地址计算的影响。
1700

被折叠的 条评论
为什么被折叠?



