单片机外设通讯方式有很多,大多都是由数据引脚和时钟引脚连接通讯双方。各种外设通讯方式除了引脚名字不同外,从硬件的层面来看都是一样的,使用导体将主从设备连接在一起,再者,就是使用的引脚数可能不同罢了。所以,我有一个问题,就是单片机各种外设通讯的实质是什么呢?心里这么想着,也就尝试给出自己的答案。
从区别上出发,首先就是各种外设通讯的外在,即是:
-
引脚名称和数目
从相同点出发,不管各种外设通讯是否有时钟引脚,但背后都得有时钟的支持。时钟就像“打鼓”一样,数据按照“鼓的节奏”进行移动。
-
时钟原理
再深入一些,应该就是通讯协议了,通讯协议一般规定了
-
帧的特征:组成(起始位,停止位,校验位),字长(n bit)
-
帧传输时序
再者就是控制营造这些的链路和寄存器了,寄存器一般有控制寄存器,状态寄存器和时钟寄存器等。只需对这些寄存器熟悉就可以,不必记忆,等到用的时候查找就行。
还有就是一些谈到通讯时的一些概念:
同步: 数据信号的发送方和接收方随着时钟信号变化过程中保持一定的相对关系。
异步: 数据信号的发送方和接收方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息。
单工:
定义:单工数据传输只支持数据在一个方向上传输。
举例:意思就是A只能发信号,B只能接收信号,通信是单向的。类比于灯塔发发出光信号,航船只能接收信号。
半双工:
定义:半双工数据传输允许数据在两个方向上传输,但是在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信。
举例:指A 能发信号给B,B也能发信号给A,但这两个过程不能同时进行。可以想象一下对讲机,你收到的回复并不是都马上就有的。而且前提是双方不能在同一个状态,如果双方同时处于收状态,或同时处于发状态,便不能正常通信了。
双工:
定义:全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。
举例:全双工比半双工又进了一步。在A 给B发信号的同时,B也可以给A发信号。典型的例子就是打电话,双方都能说,对方也能听到。