RS-232/485、IIC、SPI、CAN、USB等都属于串行通信。
TTL电平是以高低电平来表示逻辑1和逻辑0,+5V为高电平,表示逻辑1;0V为低电平,表示逻辑0。单片机的串行口通常是TTL电平,故与PC机通过串口通信时,需要TTL转232的电平转换芯片。
RS-232通常是指RS-232C,它有TXD和RXD,所以是一种全双工串行通信标准/协议,它对信号线的功能、电气特性、物理接口等都做了明确规定,RS-232C采用的是EIA电平,是以正负电压表示逻辑状态,其中-3~-15表示逻辑1,+3~+15表示逻辑0。
RS-485采用差分传输,提高了抗干扰能力。总线上只有两根线,通过这两根线的电平差值来判定逻辑状态,所以485只能实现半双工通信。RS-485的通讯线只有2条,且这两条通讯线在一次传输中都需要用到,因此485只可实现半双工通讯。485实现半双工通讯,会遇到一个问题,MCU1向MCU2发数据时,并不知道线上是否正传来MCU2数据,因为没有其他线可用来判断对方的收发状态,那么可能也会导致数据冲突。因此,RS-485要实现半双工通讯,就需要上层的软件协议加以规约,也就是做到”不能你想发数据就发数据”。可以理解,软件层协议就好像交通规则,它能让数据有序传输。
SPI总线中只能有一个主设备,可以有多个从设备,主机通过片选线来选择从机。有4根线:SCK、MISO、MOSI、SS。
I2C总线只有两根线:SDL、SCL,这两根线都需要接上拉电阻,主机通过发送从机地址,以选择要通信的从机,I2C属于多主从结构总线。
CAN总线请参考链接:https://www.cnblogs.com/jacklu/p/4729638.html
USB属于主从结构,通信总是由主机发起。