物联网常用协议(粗讲)

本文简要介绍了嵌入式系统中常见的通信协议,如UART、IIC、SPI、1-wire、CAN、MODBUS、MQTT以及LWIP,重点阐述了它们的工作原理、电平标准和应用场景。新手指南,建议深入学习以理解详细内容。
摘要由CSDN通过智能技术生成

目录

前言

一、UART

电平标准

1、TTL

2、RS232

3、RS485

二、IIC

三、SPI

四、1-wire

五、CAN

六、MODBUS

七、MQTT

八、LWIP

九、其他

总结



前言

        对于嵌入式这个物联网行业来讲有很多需要学习的协议,作为新手小菜鸡刚学了点想着写个博客记录一下,方便以后自己复习。

一、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校验,确保了数据传输的稳定可靠。

http://【趋近于完美的通讯 CAN总线!4分钟看懂!】 https://www.bilibili.com/video/BV14k4y187e6/?share_source=copy_web&vd_source=ab24206955b2928559cf9a044c646e10

六、MODBUS

        个人理解:上面都是数据的传输协议,MODBUS是一个数据的解析协议,就类似于规定了怎么去处理数据、发送数据。

        一般发送格式:地址码  操作码  数据区  CRC校验

        双方通信的关键都在于有一个CRC校验,从机接收到数据之后会先将前n-2个数据进行CRC计算对比主机传过来的CRC校验值,相等则进行命令的解析,执行相应的操作之后再通过特定的格式发送给主机+CRC校验,主机接收也是要进行CRC的计算以及比对进行判断数据的正确性。提高了数据传输的稳定性。

七、MQTT

        Message Queuing Telemetry Transport,即消息队列遥测传输协议

        MQTT协议是基于TCP/IP开发的一个“轻量级”通讯协议,采用订阅/发布模式进行数据的接收和发送,通过主题来区分是否接收数据。

        发布接收的消息分为三个等级,分别是QOS0QOS1QOS2

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等协议


总结

        因为本人是小菜鸡,本篇文章只是点一下各种协议没有具体讲解,如果需要详细了解的话就要自行查阅资料,度娘等很多地方都有很详细的讲解以及使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hard-coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值