2019-07-20 18:13发布
zdfwyh 发表于 2016-5-10 16:56 16位总线宽度,每个地址就是两个字节,每次读写会读写两个字节。8位总线宽度,每个地址就是一个字节,每次 ...
journey 发表于 2016-5-10 17:22 是原子哥的手册上写错了吗
zdfwyh 发表于 2016-5-10 17:31 没有问题,我说的是对应存储器的地址而言,IS62WV51216有几个地址引脚?容量多大?你可以算算,是不是只有一半 ...
最多设置5个标签!
对于16位数据位宽的时候,对外设来说,一个地址2个字节,但是对于STM32来说,他内部通过HADDR的偏移(右移一位对齐),来实现字节访问,6800 000对应外设地址0的低字节,6800 0001对应外设地址0的高字节。
6800 0000和6800 0001,右移一位后,实际上就是6800 000了,地址一样。最低位用来控制UB/LB实现字节访问。从而可以以:8位/16位/32位来访问外部sram,都是没问题的。
F原子哥的例程里FSMC部分 设置的16位数据宽度 为什么每个地址付给了八位数据,还说如果要是16位位宽应该地址+2?这里好不明白
是原子哥的手册上写错了吗
没有问题,我说的是对应存储器的地址而言,IS62WV51216有几个地址引脚?容量多大?你可以算算,是不是只有一半容量的引脚?所以对于设备来说,每个地址有两个字节,但是对于CPU来说尤其STM32做了兼容处理,这个是CPU自己的特性,不需要你关心,塔会在处理16位总线外设是自动将地址总线向右移动1外来操作外设,对于程序来说就像处理8位总线数据一样,所以还是可以用8位数据进行编程,唯一需要注意的就是外设的基地址,在16位总线是要注意右移位的特性.对于8位总线就没有区别了,地址不进行移位.
也就是说在用FSMC时,如果写入八位数据,它硬件会自动通过控制UB和LB来进行操作?原子哥的程序里,写入了八位数据后,地址就+1了,是不是使得SRAM容量减半了呢?那个学习手册还说如果读取16位数据的话,每读一次地址要+2? 这里好不明白,希望解答下 谢谢~~
一周热门 更多>