看穿单片机第四节:外设模型
扫描二维码
随时随地手机看文章
外设模型
我们已经知道了CPU如何通过总线进行存储器的读写,也知道地址总线的宽度决定了CPU的寻址空间,数据总线的宽度则决定了CPU的位数(单次能够读写的数据量),而控制总线在一定程度上影响了访存的速度(WR与RD为0的时间越短,访存速度越快,当然也要存储器速度跟得上才行)。有了CPU和存储器,以及连接它们的总线,这就足以构成一个完整的、可正常运行的计算机系统。我们可以把一些算法放在其中来运行,但是单片机(嵌入式处理器)并不仅仅只是用来作计算的,它更大的作用在于控制(所以单片机的英文缩写是MCU,即Micro Controller Unit,微控制单元)。IO是最直接、最常用的控制接口,我们可以将它置1或清0来输出高电平或低电平,从而实现对外部电路或机构的控制。
对前面振南的困惑从更基础的层面进行解释:C语言是如何实现对物理世界产生影响的?
在图1.6中,以CPU为核心,周边除了存储器(RAM与ROM)之外,还有很多控制器,比如IO控制器、串口控制器等等,这些就是所谓的“CPU外设”。外设其实就是一些电路,它用于实现某一特定的功能。这些电路肯定要受CPU的控制,因此在电路设计上留出了专门的接口(寄存器)。这个接口的读写是符合CPU总线时序的,所以它可以直接挂接在CPU总线上,与存储器、其它外设并存(但是分属于不同的地址区间,CPU向这些地址读写数据将对应于外设电路的不同功能)。更形象的说明请看图1.17。
图1.17 CPU外设的结构模型
很明显,CPU的整个寻址空间(它的大小由地址总线宽度决定)并不都是由存储器独占的。存储器只是占用其中的某一段而已,其它的地址空间一部分分配给各个外设,而更多的可能只是空闲保留。有人可能会问:“既然这样,那我们完全可以把自己作的电路接到CPU的总线上,为CPU扩展外设。”没错,只要CPU芯片把总线通过外部的引脚开放出来,我们就可以挂接自己的电路,让CPU直接去访问控制,比如挂接一个8080接口的液晶屏等。(51的xdata、STM32的FMC都是CPU内核将总线对外开放的实例,在后面大家会看到一些单片机外部总线巧妙的应用实例)。