STM32 在16位数据宽度下的地址问题
来源:互联网 发布:决战武林翅膀进阶数据 编辑:程序博客网 时间:2024/05/16 15:31
在项目中,原来使用的是八根数据线,读取数据没有问题,在后来改用十六根地址线并把数据宽度改为十六位之后读出来的数据就很奇怪了,经过仔细分析师由于STM32的内外地址映射造成的,具体参照STM32技术参考手册中文翻译第十版的327页,根据我的理解叙述如下:
块1存储区被划分为4个NOR/PSRAM区,这四个区在内部地址上是连续排列的。但是实际上每个区共用的是同一组地址线与数据线,因此需要有内外的一个地址映射,因此在STM32中实际上有两个地址,一个是在内部访问的地址,另外一个是实际地址线输出的地址。
HADDR[27:0]对应的是需要转换到外部存储器的内部AHB地址线,其中HADDR[27:26]位用于选择四个存储块之一。
HADDR[25:0]包含外部存储器地址。HADDR是字节地址,而不同的外部存储器数据长度也不一样,因此在数据宽度为8位和16位时映射关系也不一样。 在数据宽度为8位时HADDR[25:0]与FSMC_A[25:0]对应相连,这时候在STM32中访问的地址和实际地址线产生的地址是一致的。而在16位数据宽度时HADDR[25:1]与FSMC_A[24:0]对应相连,HADDR[0]未接,这时候实际地址线上给出的地址为需要访问的偏移地址的一半。 在本系统中由于使用了高精度的16位AD,实际数据读取与处理也都是16位,为了快速访问STM32采用的就是16位数据宽度,因此需要针对两者的地址进行相应的映射。重新计算地址之后问题解决。
- STM32 在16位数据宽度下的地址问题
- STM32的 位寻址(地址映射)
- 解决在win7 64位系统下无线网卡改不了MAC地址的问题
- STM32数据位错位问题研究
- vc6在win764位下的问题
- STM32 DMA外设地址的计算问题
- 在64位Win7下遇到的问题
- 关于CopyU!在64位系统下运行的问题
- VC6在win7(64位)系统下的调试问题
- mysql在64位windows下安装遇到的问题
- 解决XMPP在64位下不支持的问题
- Boost在Linux下64位静态库的问题
- DIV在100%下iframe宽度高度的自适应的问题
- DIV在100%下iframe宽度高度的自适应的问题
- 关于在有限的宽度和高度下Jquery中的Dialog显示发生错位的问题
- 解决qt在相同分辨率不同宽度的屏幕下字体显示位置不一样的问题
- DIV在100%下iframe宽度高度的自适应的问题
- 关于Extjs 2.2 中 Gridpanel在IE6 下宽度超长的问题已经解决
- 初识Android开发
- TCP/IP memo 1: MTU、路径MTU、路径MTU的发现机制
- ubuntu下android开发环境搭建
- 关于一个java 进制转换的swing
- Matlab函数accumarray的用法
- STM32 在16位数据宽度下的地址问题
- ORA-39095
- 很好的python框架学习资料
- IMPDP table_exists_action 参数的应用
- 相逢是一种缘
- Mandelbrot集
- 为什么说在持有自旋锁时不能进入睡眠或阻塞
- ExtJS 4正式版今天发布
- 泊松分布的随机数的函数或算法