zoukankan      html  css  js  c++  java
  • STM32 在16位数据宽度下的地址问题

    在项目中,原来使用的是八根数据线,读取数据没有问题,在后来改用十六根地址线并把数据宽度改为十六位之后读出来的数据就很奇怪了,经过仔细分析师由于STM32的内外地址映射造成的,具体参照STM32技术参考手册中文翻译第十版的327页,根据我的理解叙述如下:

    1存储区被划分为4NOR/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]未接,这时候实际地址线上给出的地址为需要访问的偏移地址的一半。

    在本系统中由于使用了高精度的16AD,实际数据读取与处理也都是16位,为了快速访问STM32采用的就是16位数据宽度,因此需要针对两者的地址进行相应的映射。重新计算地址之后问题解决。

    ★emouse 思·睿博客文章★ 原创文章转载请注明:http://emouse.cnblogs.com
  • 相关阅读:
    路飞学城Python-Day23
    JS中异常处理的理解
    JS获取浏览器中的各种宽高值
    浏览器兼容性处理大全
    js中点击事件方法三种方式的区别
    js 中继承的几种方式
    理解JS的6种继承方式
    理解javascript中的事件模型
    Javascript 原型链之原型对象、实例和构造函数三者之间的关系
    对于js原型和原型链继承的简单理解
  • 原文地址:https://www.cnblogs.com/emouse/p/2198153.html
Copyright © 2011-2022 走看看