|
发表于 2023-12-8 15:12:31
|
显示全部楼层
我看了下你之前的帖子,你的问题大概是直接访问存储芯片和访问单片机内存储的区别
以你说的 6116 而言,它的地址总线(A0~A10)、数据总线(D0~D7)是全部直接引出的,当其被选中(CS)后,根据你当前地址总线上的编码,芯片定位到该编码对应的一个 byte 的存储单元,然后,根据读写线(RW)的电平判断当前是读(数据总线变更为输出)还是写(数据总线变更为输入),在使能(E)线变为高电平后,若为读将该地址存储单元的数据放到数据总线上;若为写将总线上的数据写到这个存储单元。
完毕后使能(E)线变为低电平,开始下一个操作,比如写另一个地址或读另一个地址的数据,或者不用该芯片(数据总线变更为第三态)。
由于地址总线完全引出,你可以随时访问任意一个地址的数据。
而 AT8951 的片内存储没有引出任何一根线,它挂在单片机的内部总线上,单片机再引出几根专用通信线,你要根据这几根通信线约定的协议对片内存储进行读写,这个过程不是直接的,是通过单片机的专用控制器和数据总线完成的。而且,你不能随时访问任意一个地址的数据,只能按顺序从头访问到末尾。
用电脑打比方,电脑用硬盘(或 SSD)存储数据,如果你自己去访问硬盘,你可以通过硬盘的总线指令硬盘调度任何一个区域(实际上不能)给你读写;但如果是一台完整的电脑,它是不会把硬盘总线引出给你的,你需要通过这台电脑预设的通信端口,和这台电脑上运行的操作系统沟通,使用一个预设的协议,让这个操作系统调度某个地方的数据给你,比如我们可通过 SMB 协议,从 Windows 操作系统的电脑里取出或存入一个文件,但这个过程是经过了物理上的比如 Wifi 网络,协议上的 SMB 协议,以及操作系统的层层转发的,是一个非直接操作,而且显然的,你只能存储这台电脑开放给你的一部分文件,但你不能改动这个硬盘的分区表,等等 |
|