一、通讯的一些基本认知
1、什么是异步或同步通信
异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来,不需要外部时钟源。
同步通信则是一种比特同步通信技术,要求发收双方具有同频同相的同步时钟信号,只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后便在同步时钟的控制下逐位发送/接收。进行数据传输时,发送和接收双方要保持完全的同步,因此,要求接收和发送设备必须使用同一时钟。
2、什么是半双工,全双工
半双工则是一种在通信过程中的任何时候,信息可以从A传输到B,从B传输到A,但只能有一个方向的传输,不能同时传输的传输模式。这就像一条窄窄的马路,同时只能有一辆车通过。
全双工是一种通讯传输模式,它允许数据在两个方向上同时传输,即发送和接收可以同时进行,而且两者是瞬时同步的。这就像我们平时打电话一样,说话的同时也能够听到对方的声音。
二、UART通讯协议
1、什么是UART (异步,全双工)
UART是一种通用的串行通信总线,它通过两根线(一根用于发送,一根用于接收)实现数据的异步传输。由于UART是异步的,所以发送和接收设备不需要共享同一时钟信号,这使得UART成为一种非常灵活和通用的通信方式。
2、Tx如何实现数据的发送
假设发送数据198 (1 1 0 0 0 1 1 0 )
1、前提需要将收发双方的数据数据域宽度配置成相同大小(数据位)。
2、接收器需要知道Tx的发送速度,若速度不一样,Rx就会不知道Tx数据什么时候开始,什么时候结束,就会导致有可能读取到错误的数据值(波特率)。
3、最开始没有发送数据之前Tx一直保持高点平,当需要发送数据的时候,Tx会拉低告知Rx要发数据(起始位)。
4、数据传输,固定9600波特率,一秒钟传输9600bit,1bit需要104us,当Rx接收到起始位瞬间,就开始计时104us,当104us之后(起始位结束)就是真实数据的第一位,而通常我们不会再这里保存这个值,因为数据不稳定,而是延时52us之后读取值再保存,后面读取数据都是这样循环往复。
5、当Rx接收到相同数据宽度的数据之后,就会等待停止位(高电平)。
6、数据随即到达缓存区,缓冲区再发给其它位置,这样就实现了UART通讯。
三、IIC协议
1、什么是IIC协议 (同步,半双工)
IIC协议,全称为Inter-Integrated Circuit,即集成电路之间,是一种由Philips公司开发的两线式串行总线,用于连接微控制器及其外围设备。该总线仅由数据线SDA和时钟线SCL构成,可发送和接收数据。
IIC协议采用主从式的通信架构,通信的发起方称为主设备(Master),而被动响应通信的设备称为从设备(Slave)。在IIC总线上,可以连接多个从设备,但只能有一个主设备。主设备负责发起通信请求,并控制总线的访问权限,而从设备则根据主设备的指令进行数据的接收和发送。
此外,IIC协议把传输的消息分为两种类型的帧:地址帧和数据帧。地址帧用于主设备指明消息发往哪个从设备,而数据帧则是由主设备发往从设备的数据或者是接收到来自于从设备的数据。
2、如何实现数据传输
1、需要设定发送数据的速度(通常工作速度400K)和位数(数据长度一般为15或16位)。
2、在发送数据时建立同步时钟,因此接收器能知道数据什么时候开始。最开始的时候SDA和SCL都会保持高电平,表示设备处于空闲状态,当SDA由高电平跳变成低电平时,则证明设备要开始发送数据了。
3、起始位开始之后,随即会向从机发送一个8位的数据,8为数据内容位(7位从机的地址+1位需要对从设备进行什么操作的选项),当从设备接到这8位数据之后,会向主设备返回一个应答信号(ACK),告诉主设备已经准备好了。
4、从设备是怎么知道IIC上,什么时候是数据1,什么时候是数据0的
当时IIC起始位开始之后 ,发送数据的时候时钟线SCL保持高电平,当SDA为高电平则传输1,为低电平则表示传输0。
5、主设备知道后就会向从设备发送数据,发送一定数据之后,从设备就会向主设备回答一个ACK,继续这样循环发送数据,直到从设备收到IIC的结束条件。
四、SPI协议
1、什么是SPI协议 (同步,全双工)
SPI(Serial Peripheral Interface),即串行外围设备接口,是一种高速的、全双工、同步的通信总线,由摩托罗拉公司提出并广泛应用于各个领域。
SPI总线系统是一种主从结构的总线系统,通常由一个主设备(Master)和一个或多个从设备(Slave)组成,主设备负责控制整个通信过程,从设备则根据主设备的指令进行相应的操作。SPI总线系统由四根线组成,分别是:
- SCK(Serial Clock):时钟信号线,用于同步数据传输。
- MOSI(Master Out Slave In):主设备输出/从设备输入数据线,用于主设备向从设备发送数据。
- MISO(Master In Slave Out):主设备输入/从设备输出数据线,用于从设备向主设备发送数据。
- CS(Chip Select):片选信号线,用于选择需要通信的从设备。
2、如何实现数据的传输
1、选定通信的从机,当从机片选信号处于低电平的时候,则怎么该从机被主机选中,需要进行通信。
2、进行通信的时候SPI有四种通信模式,从机设备模式一般不能更改的,但我们可以进行主机的更改,是主从机处于同一种工作模式,可以通过时钟极性和时钟相位来实现通信方式。
3、下面将以模式0进行讲解
当从机设备被选中后,片选信号(CS=0)一直为低电平,当选择工作模式0的时候,表示时钟极性设置为0则表示时钟线为低电平时才有效,而时钟相位为0则表示当时钟极性状态发生翻转时,奇数次翻转瞬间,MOSI所对应的电平为真正发送的数据,MISO所对应的数据为要读取的数据。