目录
前言
对于嵌入式这个物联网行业来讲有很多需要学习的协议,作为新手小菜鸡刚学了点想着写个博客记录一下,方便以后自己复习。
一、UART
Universal Asynchronous Receiver/Transmitte,即通用异步收发器。是通信最常用的协议。还有个USART但大多数情况下都使用UART。
它的连接方式是反接,也就是RX->TX,TX->RX,是全双工通信(可以同时进行收发)。
因为两者之间没有共同的信号线,对于传输的起始没有控制,所以一般都要规定波特率(baud),通过这种方式来提高数据的准确性。
数据格式:起始位(1)、数据位(8-9)、校验位(1/0)、停止位(1-2)
大多数情况下都是8N1,8个数据位,无校验位,1个停止位
电平标准
1、TTL
大部分的单片机都用的是TTL电平,5V为高电平代表的是逻辑1,0V为低电平代表的是逻辑0
因为很容易出现干扰所以就出现了下面两种电平协议。
2、RS232
RS232的电压范围在-15V~15V,在-15V~-3V的区间里代表的是逻辑1,在3V~15V的区间里代表的是逻辑0。这被称之为负逻辑电平。
一般使用max232芯片将TTL电平转为RS232电平
3、RS485
RS485使用了两根线(A,B),使两个线形成差分信号,减低了干扰的影响。AB电压差为+2V~+6V是代表的是逻辑1,-6V~-2V代表的是逻辑0。
采用了双绞线的硬件线路,受干扰时两根线都会变,压差还是一样,进一步的减小了干扰。
二、IIC
Inter-Integrated Circuit ,采用了一主多从的模式(即一个主机多个从机),将所有从机都连接在了主机的SDA和SCL两根线上。所以IIC时一个半双工通信。
SDA和SCL的配合使用,形成特定的时序来进行数据的传输。
三、SPI
Serial Peripheral Interface,即串行外设接口。采用一主多从的连接模式,主机与所有从机共用MOSI(主机发送从机接收),MISO(主机接收从机发送),SCLK线这三根线,每个主机和每个从机都独立连接一根CSS(片选信号线)用于选择与之通信的从机。
主机通过CSS信号线选择了从机之后,再通过时钟极性与时钟相位的配置进行特定的时序传输数据。
四、1-wire
one-wire,即单总线协议。应该也支持一主多从,使用一根数据线进行数据的收发,通过严格规定的协议进行数据以及命令的传输。
五、CAN
Controller Area Network
使用的是RS485的电平特性,隐性电平是电压差为0V代表的是逻辑1,显性电平是电压差为2.5V代表的是逻辑0。
CAN通信有严格的通信数据帧格式,其中还包含了CRC校验,确保了数据传输的稳定可靠。
六、MODBUS
个人理解:上面都是数据的传输协议,MODBUS是一个数据的解析协议,就类似于规定了怎么去处理数据、发送数据。
一般发送格式:地址码 操作码 数据区 CRC校验
双方通信的关键都在于有一个CRC校验,从机接收到数据之后会先将前n-2个数据进行CRC计算对比主机传过来的CRC校验值,相等则进行命令的解析,执行相应的操作之后再通过特定的格式发送给主机+CRC校验,主机接收也是要进行CRC的计算以及比对进行判断数据的正确性。提高了数据传输的稳定性。
七、MQTT
Message Queuing Telemetry Transport,即消息队列遥测传输协议
MQTT协议是基于TCP/IP开发的一个“轻量级”通讯协议,采用订阅/发布模式进行数据的接收和发送,通过主题来区分是否接收数据。
发布接收的消息分为三个等级,分别是QOS0,QOS1和QOS2。
QOS0:至多发送一次
QOS1:至少发送一次
QOS2:保证消息有且仅有一次发送到目的地(因为要保证数据准确且发送到目的地所以消耗的资源也是最多的)
其中MQTT中还包含了心跳(用于服务器确认设备是否连接),遗言等机制。
心跳确保了客户端与服务器的连接状态,遗言确保了断开前的最后一次通信
八、LWIP
Light weight IP,基于TCP/IP开发的一个轻量级协议栈,用于网络中传输信息和数据。 多用于单片机进行网络连接,提供了三种接口使用(RAW API 、NETCONNN API 、Socket API)。
九、其他
Zigbee、BLE、3G/4G/5G、NB-IOT、WIFI等无线通信协议
USB、TCP/IP等协议
总结
因为本人是小菜鸡,本篇文章只是点一下各种协议没有具体讲解,如果需要详细了解的话就要自行查阅资料,度娘等很多地方都有很详细的讲解以及使用。