16位数据宽度的SRAM里有UB,LB两根控制线,代表高低字节,怎么控
我的单片机数据线就是16位的,那是不是应该把这两根线接地?
回
应该是在cpu为8位总线宽度时才会用到,具体的时序该型号的sram手册中应该有描述
有,但没看懂
我说的意思是如果这两根线直接接地的话是不是每次读写就是16位的操作,能访问全部空间
每次读写就是16位的操作
我说的意思是如果这两根线直接接地的话是不是每次读写就是16位的操作,能访
问全部空间
应该没有问题
但是你的代码也是能使用 16 位的方式了. 这样对于字节操作不是很方便.
无法直接单独更改每一字节, 不过可以读取 16 位, 修改其中的 8 位, 然后再写回 16 位.
UB,LB两根控制线
UB 应该是访问 高 8 位
LB 应该是访问 低 8 位
如果使用 UB,LB两根控制线 就可以控制读取/写入的是 高 8 位 或者 低 8 位
, 或者整个 16 位.
找到了
Using the high-density STM32F10xxx FSMC peripheral to drive external memories.PDF
香主能不能给解释下
NBL0和NBL1是怎么控制的,用外部的16位SRAM到底是怎么个操作过程?
请看我翻译的STM32技术参考手册中第18章的内容
在表18-8中写得很清楚:
NBL[1] 输出 高字节使能(存储器信号名称为:NUB)
NBL[0] 输出 低字节使能(存储器信号名称为:NLB)
NBL0控制操作低字节,NBL1控制操作高字节。你哪点还不明白,还需要更详细的解释吗?
这个可能是比较通用的问题
应该是很多网友都想知道的问题
上面的说明我倒是看明白了,现在的疑问就是当我在程序里访问单字节变量和双字节变量的时候这个NBL[1]和NBL[0]是不是硬件自动控制的,需要我用软件干涉么?
请看我翻译的STM32技术参考手册中表18-9的内容
当配置了外部存储器的宽度为16位时,如果程序需要以8位宽度访问外部存储器时,则这两条信号线会由硬件自动产生。
FSMC_BCR1…4的MWID位用于指定外部存储器的宽度,见18.5.6节。
在18.3.1节中“一般的操作规则”下的第3点也明确说明了。
读倒没关系,就是写数据时,如果要单独写一个字节,就要
所以处理器会有高、低字节选通的控制线。这些信号都是硬件自动产生的