嵌入式——串行通信接口

常见串行通信接口分为:同步和异步通信接口
异常通信有:UART接口。
同步通信接口常见的有:SPI和I2C接口,USART(是带有clk同步时钟,不过一般很少使用)
《异步接口》
1、UART接口
UART接口是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)的缩写。它也是异步通信接口的统称。具体到常用的协议上主要分为RS-232C(RS:表示RecommendStandard推荐标准,C是最新的协议规定,不过也是1969的事情了),RS-485D接口。
所有UART接口本身应支持如下特性:

  1. 波特率

  2. 起始位

  3. 数据位

  4. 奇偶校验位

  5. 停止位

  6. 空闲位
    嵌入式——串行通信接口_第1张图片
    注意:UART通信都是支持小端传输。
    1.1 RS-232C (串口com口)
    1)接口示意图
    嵌入式——串行通信接口_第2张图片
    CTS和RTS是控制输入和输出标志位,一般连接方法就是TX、RX和GND三根线就行了。
    2)实际使用方法
    RS232实际的逻辑电平1=-3~+15V,但是单片机或微处理器逻辑电平都是1=5V或者3.5V,所以在单片机或者微处理器端使用rs232都会加上电平转换芯片,也就是从主控芯片管脚出来之后会加上电平处理芯片。
    3)注意事项

  7. 串口是异步通信,所以在通信两端是需要各自的时钟。也就是需要设置对波特率。

  8. RS232支持一对一全双工传输,即在发送时可以进行接收操作。

1.2 RS-485D
1)接口示意图
嵌入式——串行通信接口_第3张图片
RS485的数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。也就是在传输过程中只要两个数据线。
2)实际使用方法
嵌入式——串行通信接口_第4张图片
MAX485实现485电平之间的转换,通过J9的两根线将数据传输出去。而在主控MCU端,需要人为控制485-DIR电平,来实现此时是需要发送数据还是接收数据。
3)注意事项

  1. RS485如何实现一托多功能
    485 可以在只有一个主设备,外挂32(理论可以256台)台被控制的设备。但是如何实现一对多呢?其实主机向从机发送数据是很容易,但是从机不能向主机主动发送数据。
    RS485总线上所使用的是一主多从通信协议,采用轮询方式进行数据通信。也即一条RS485总线上,只有一台主机,其余的都是从机,主从机之间要进行通信时,是需要主机依次轮询,轮询到了要发数据的从设备,从设备才能发送数据。这种通信方式存在通信实时性,可靠性差,而且各个从设备之间是不能通信的。
    但是在实际开发中一对多的我还没遇到,后面遇到之后,在好好总结一下。

《异步通信》
1、SPI接口
1)实际用法
SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。但在实际开发中,SPI也是可以用在两个模块之间的通信(注意:SPI 通信中主机向从机发送数据,当从机有数据发向主机时,此时需要额外拉低管脚作为从机向主机发送数据中断信号)
2)四个连线

  • CS:片选使能信号(看从设备是什么电平使能)
  • SCK:时钟信号
  • MOSI:主出从进接口
  • MISO:主进从出接口
    3)四种模式
    其实四种模式也就是有CPLO(时钟极性)和CPHA(时钟相位)来决定。说的通俗点,就是其实是第一个时钟有效还是第二个时钟有效,是上升沿有效还是下降沿有效。
    嵌入式——串行通信接口_第5张图片

2、I2C通信
1)实际连线
嵌入式——串行通信接口_第6张图片
I2C总线总共也就两根线:SCL和SDA。这个连接方式很像前面讲的RS-485接口的情况。不过I2C是控制信号总线,所以I2C自身在设计的时候是有些协议的。其一:在一对多的时候,I2C从设备都是有地址的。这样就解决RS-485一对多的通信问题。其二:I2C在发送和接收数据时,不是像RS-485那样,有个数据方向选择信号。
2)数据接收和发送操作
1.发送数据
(1) 主机在 I2C 总线发送始起信号(S),然后发送从机地址(slave addr);
(2) 从机成功接收到属于自己的从机地址后,返回应答信号(ACK);
(3) 主机接收到应答信号后,把 buf 缓冲区中的数据逐个在 I2C 总线发送;
(4) 从机每成功接收到一个从主机发来的数据都返回应答信号;
(5) 当主机的数据发送完毕后,在 I2C 上发送结束信号(P)
嵌入式——串行通信接口_第7张图片

2.接收数据
(1) 主机在 I2C 总线发送始起信号(S),然后发送从机地址(slave addr);
(2) 从机成功接收到属于自己的从机地址后,返回应答信号(ACK);
(3) 主机接收到应答信号后,准备接收从机发来的数据;
(4) 从机把数据逐个向主机发送;
(5) 主机每成功接收到一个在从机发来的数据都返回应答信号;
(6) 当主机接收到最后一个数据时并返回应答信号,而是 I2C 上发送结束信号(P)。
嵌入式——串行通信接口_第8张图片
3)如何控制读写操作
以FM24C02A为例说明
嵌入式——串行通信接口_第9张图片
即最后1位会决定此时是读还是写操作。也就是在发送其实地址的 时候就会决定后面一操作是需要向从机写还是通过向从机读。

你可能感兴趣的:(嵌入式串行通信接口)