首先你要明白为什么地址先要错位接线
这个说起来有点复杂,不知这样说你明不明白
由于你的RAM是16bits为存储单元的
而从接线看, 你的单片机应该是以8bits为存储调度机制
这就是说
对于RAM来说 0地址有16bits,1地址也有16bits,每一个地址都是16bits
但对于单片机来说就不是这样了,他根本不知道RAM是16位这一回事,在他看来RAM的0地址只有8bits,1地址也是8bits
因此如果采用对齐方式接线(A0接A0,A1接A1)的话
当单片机向RAM写数据时,只写8位,但是RAM却不知道,却把16位写进来了(连接了16根数据线),这样会造成致命的错误
所以通常在这中存储机制不对应的存储器接线中,会使用错位接线
16bits是8bits的两倍,相当于左移1位, 所以单片机的A1就接到存储器的A0上
这样单片机发出的0或1地址就对应存储器的0地址,单片机发出的2或3地址均对应存储器的1地址(8位读写对应16位存储)
这样就可以保证16位存储
但是有些时候需要存储8位,那怎么办
这个时候就考A0结合BHE控制了
下图是关于这块芯片手册的相关部分
可以看出, 当单片机寻一个地址是奇数x的时候A0是高电平
则对应nLB若口为低
此时BHE若为低,则读/写要存储器中x>>1这个地址上的16bits数,同时屏蔽低电平
当单片机寻一个地址是奇数x的时候A0是低电平
则对应nLB若口为高
此时BHE若为低,则读/写要存储器中x>>1这个地址上的16bits数,同时屏蔽高电平
nLB若口为高
此时BHE若为低,则读/写要存储器中x>>1这个地址上的16bits数,不屏蔽
以上的操作只是为了方便地对8bits数或16bits数进行方便的读写,而不需要进行硬件的修改
为什么单片机连接16BIT存储器时,错位相接
最新推荐文章于 2023-10-26 16:09:55 发布