用FSMC控制IS62WV51216时关于地址和数据大小的问题

2019-07-20 18:13发布

外部内存的首地址是0X68000000,我想问一下,每个地址是存放一字节数据吗? 原子哥以及各位大神给小白解释下吧  谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
正点原子
1楼-- · 2019-07-20 22:41
得根据位宽来算。但是对于STM32内部来说,事实上是固定一个地址对应一个字节的。


对于16位数据位宽的时候,对外设来说,一个地址2个字节,但是对于STM32来说,他内部通过HADDR的偏移(右移一位对齐),来实现字节访问,6800 000对应外设地址0的低字节,6800 0001对应外设地址0的高字节。

6800 0000和6800 0001,右移一位后,实际上就是6800 000了,地址一样。最低位用来控制UB/LB实现字节访问。从而可以以:8位/16位/32位来访问外部sram,都是没问题的。

zdfwyh
2楼-- · 2019-07-21 00:34
 精彩回答 2  元偷偷看……
journey
3楼-- · 2019-07-21 02:36
zdfwyh 发表于 2016-5-10 16:56
16位总线宽度,每个地址就是两个字节,每次读写会读写两个字节。8位总线宽度,每个地址就是一个字节,每次 ...

F原子哥的例程里FSMC部分 设置的16位数据宽度  为什么每个地址付给了八位数据,还说如果要是16位位宽应该地址+2?这里好不明白
journey
4楼-- · 2019-07-21 02:43
zdfwyh 发表于 2016-5-10 16:56
16位总线宽度,每个地址就是两个字节,每次读写会读写两个字节。8位总线宽度,每个地址就是一个字节,每次 ...

是原子哥的手册上写错了吗
zdfwyh
5楼-- · 2019-07-21 03:01
journey 发表于 2016-5-10 17:22
是原子哥的手册上写错了吗

没有问题,我说的是对应存储器的地址而言,IS62WV51216有几个地址引脚?容量多大?你可以算算,是不是只有一半容量的引脚?所以对于设备来说,每个地址有两个字节,但是对于CPU来说尤其STM32做了兼容处理,这个是CPU自己的特性,不需要你关心,塔会在处理16位总线外设是自动将地址总线向右移动1外来操作外设,对于程序来说就像处理8位总线数据一样,所以还是可以用8位数据进行编程,唯一需要注意的就是外设的基地址,在16位总线是要注意右移位的特性.对于8位总线就没有区别了,地址不进行移位.
journey
6楼-- · 2019-07-21 03:59
zdfwyh 发表于 2016-5-10 17:31
没有问题,我说的是对应存储器的地址而言,IS62WV51216有几个地址引脚?容量多大?你可以算算,是不是只有一半 ...

也就是说在用FSMC时,如果写入八位数据,它硬件会自动通过控制UB和LB来进行操作?原子哥的程序里,写入了八位数据后,地址就+1了,是不是使得SRAM容量减半了呢?那个学习手册还说如果读取16位数据的话,每读一次地址要+2?  这里好不明白,希望解答下  谢谢~~

一周热门 更多>