什么是通讯?
首先,所有的交流和沟通都是通讯,我们人类通过共同语言才能互相通讯,那么在单片机世界中就要靠“共同语言”——通讯协议进行通讯,其次通讯还需要对象,可以是一对一,一对多,这就是所谓的双机,多机通讯。通讯还需要介质,人类靠的是空气,那么单片机靠的就是电线。
通讯协议有哪些?
- UART(Universal Asynchronous Receiver/Transmitter):即通用异步收发器,是一种广泛应用于单片机系统的串行通信协议。它主要用于单片机与单片机或者其他设备之间的点对点通信。UART通信不需要时钟线,因此硬件连接简单,但由于是异步通信,需要设置波特率、数据位、停止位和校验位等参数。
- I2C(Inter-Integrated Circuit):由NXP(原PHILIPS)公司设计的集成电路总线,适用于主控制器和从器件间的主从通信。I2C协议使用两根线进行数据传输,一根是时钟线(SCL),另一根是数据线(SDA)。它可以在总线上挂载多个设备,通过地址来识别不同的设备。
- SPI(Serial Peripheral Interface):即串行外设接口,是一种同步串行通信协议,通常用于单片机与高速外设之间的通信。SPI通信需要至少四根线,包括一个时钟线、一个主设备选择线和两个数据线(一个用于发送,一个用于接收)。SPI通信速度快,但通常需要更多的硬件连接。
- RS-485:是一种差分信号传输的串行通信协议,主要用于远距离、高速率的通信。RS-485支持多点通信,可以在一条总线上连接多达32个设备。由于采用差分信号,RS-485具有较好的抗干扰能力和长距离传输能力。
- CAN总线(Controller Area Network)是一种高性能的串行通信协议,广泛应用于汽车、工业自动化以及医疗设备等领域。
-
1-wire 单总线是 Maxim 全资子公司 Dallas 的一项专有技术与目前多数标准串行数据通信方式,如 SPI/I2C/MICROWIRE不同,它采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的。它具有节省 I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。为了专注于通信本身,文章只介绍命令序列和信号方式(信号类型和时序)。