
通信协议
文章平均质量分 80
昵名不能为空
注:
注:
本人博客更多的目的是给自己得笔记!!!
注:
注:
展开
-
SPI通信详解
一、前言 SPI是一种高速全双工同步通信总线。一个主机设备可以和一个或多个从机设备进行通信。主设备开始与从设备的同步通信,从而完成数据的交换。标准的SPI有四个引脚,分别为:MOSI: 主机输出从机输入MISO: 主机输入从机输出CLK: 时钟CS片选(这个引脚叫法比较多)二、名词CPOL:clock polarity 时钟的极性:表示 SPI 在空闲时, 时钟信号是高电平还是低电平.CPHA:clock phase 时钟的相位:表示 SPI 设备是在 SCK 管脚上的时钟信号变为上原创 2021-08-20 20:55:48 · 9126 阅读 · 0 评论 -
IIC通信详解
对于这种常用通信协议中的细节,时间长不使用总是记不清,今写下笔记。一、时序及信号1、起始信号:当时钟总线SCL为高电平时,数据线SDA由高电平向低电平跳变。2、结束信号:当SCL线为高电平时,SDA线从低电平向高电平跳变。注:开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态,其它器件不能再产生开始信号。主器件在结束信号以后退出主器件角色,经过一段时间过,总线被认为是空闲的。3、数据采样IIC总线数据传送采用时钟脉冲逐位串行传送方式,在SCL的低电平期间,SDA线上原创 2021-08-20 12:22:07 · 2469 阅读 · 0 评论 -
NMEA0183格式GPS数据详解
NMEA0183格式以’$'开始,主要语句有GPGGA,GPRMC,GPGSA,GPGSV,GPVTG,GPZDA等NMEA格式数据如下:$GPGGA,121252.000,3937.3032,N,11611.6046,E,1,05,2.0,45.9,M,-5.7,M,,0000*77$GPRMC,121252.000,A,3958.3032,N,11629.6046,E,15.15,359.95,070306,,,A*54$GPVTG,359.95,T,,M,15.15,N,28.0,K,A*04原创 2021-02-23 16:55:47 · 1808 阅读 · 0 评论 -
非常详细的MQTT+TLS(四)----阿里SDK的使用
非常详细的MQTT+TLS----阿里SDK的使用一、demo的下载1、登录阿里云的控制台,找到文档与工具2、定制自己的SDK,按着我的选择方式,我创建MQTT+SSL的线程一共使用了4K的堆栈(剩下100多Byte)PS:没有计算接受发送等Buf在内哈。二、demo的使用前面分别说明了MQTT和TLS的移植。当然,我们还可以选择给直接的办法,直接使用阿里云提供的SDK,阿里云上面提供的SDK模块化做的非常好,我们只需要修改一些与平台相关的文件就可以完美运行。如果你的系统是linux或者fre原创 2020-08-27 19:09:30 · 3882 阅读 · 0 评论 -
非常详细的MQTT+TLS(三)----TLS篇
非常详细的MQTT+TLS----TLS篇多的不说少的不唠,这篇文章没有理论只有经验!1、移植有了前面MQTT的移植,相信大家也都了解了这种软件包的套路我下载的是【mbedtls-mbedtls-2.23.0】,文件夹目录如上图所示,其中大部分文件都是示例及说明等。TLS移植时最麻烦的应该就是config文件的配置,内容很多,在这里给出一个对接成功的config文件供参考。【超链接】与MQTT类似SSL也需要我们配置net_sockets.c,该文件内部用于创建TCP以及读写的底层函数,如果你使原创 2020-08-27 18:56:10 · 7019 阅读 · 6 评论 -
非常详细的MQTT+TLS(二)----TLS铺垫篇
非常详细的MQTT+TLS----TLS铺垫篇在移植TLS之前先熟悉一下TLS、TCP/IP、MQTT三者的关系,这很重要!!“TCP/IP、MQTT、SSL之间是什么关系呢?”通过MQTT章节的说明已经明确了TCP/IP和MQTT之间的关系,那SSL在MQTTs处于什么位置嘞。那就要从TLS的定义说起TLS称为安全传输层协议,用于在两个应用程序之间提供保密性和数据完整性。说白了TLS就在TCP之上建立了一个通道,将我们TCP传输的明文进行加密,从而保证通信的私密性。如图为MQTT与MQTTs的区原创 2020-08-27 18:53:38 · 6238 阅读 · 0 评论 -
非常详细的MQTT+TLS(一)----MQTT篇
非常详细的MQTT+TLS----MQTT篇首先要说明的是,MQTT是一个构建在TCP/IP之上的轻量消息协议,也就是说我们要创建MQTT协议之前需要创建TCP连接。在TCP连接之上再创建MQTT通信。1、MQTT移植:如图是我们从github下载到的MQTT包。第一次接触的人一定和我一样一脸懵逼,现在我很负责任的告诉你,你只需要关注如下两个文件夹。在移植时我们需要将【MQTTPacket】→【src】下面的文件移植到我们的自己平台上,这些文件可以理解成是对接MQTT的公共文件包,不管你是什么平台原创 2020-08-27 18:32:06 · 14557 阅读 · 0 评论 -
TCP连包问题解决:Nagle算法
在使用LWIP创建TCP时,发送比较快时发现出现连包现象,同样的发送速度UDP却没有出现。这是为什么呢?最终定位的Nagle算法:TCP/IP协议中,Nagle算法是默认开启的。那么什么是Nagle算法呢?Nagle算法通过减少需要传输的数据包,来优化网络。在内核实现中,数据包的发送和接受会先做缓存。启动TCP_NODELAY,就意味着禁用了Nagle算法。当我们不设置TCP_NODELAY时,就默认打开了Nagle算法。这个时候,我们发送的数据将会在写缓存中保存,直到保存到一定量之后,数据才会被发送。原创 2020-07-17 19:36:49 · 1918 阅读 · 0 评论 -
DL645通信协议97/07规约(附上下行例子)
DL/T645规约是针对电表通信而制定的通信协议,目前分两个版本,一个为1997年制定的成为97规约,还有就是07年指定的07规约。目前二者并存于市场中,要弄清楚二者的差异一、数据帧格式这里需要注意的点有:1、地址域长度不足时有用00H补齐的,也有用AA补齐的,这里可以自己测试一下。2、数据域中的数据接受和发送的时候都是需要处理的,主站加0x33,从站减0x33。3、所有的数据项(地址域、数据域)都需要按着低字节在前,高字节在后的远程传输。4、一般需要在每一帧数据前加上前导字节:FE FE F原创 2020-06-16 18:32:10 · 16593 阅读 · 2 评论 -
UDP中调用connect以及使用send的好处
udp调用connect有什么作用整理一下.1:UDP中可以使用connect系统调用2:UDP中connect操作与TCP中connect操作有着本质区别。TCP中调用connect会引起三次握手,client与server建立连结.UDP中调用connect内核仅仅把对端ip&port记录下来.3:UDP中可以多次调用connect,TCP只能调用一次connect. &nb...原创 2019-12-19 20:51:14 · 2270 阅读 · 0 评论 -
RS485通信和Modbus通信协议汇总
1. 主从模式RS-485上的软件层协议ModBus主要依赖于主从模式。主从模式是指在半双工通讯方式上,2个或者2个以上的设备组成的通讯系统中:(1) 至少且只有一个主机,其他的都是从机(2) 不管任何时候,从机都不能主动向主机发送数据(3) 主机具有访问从机的权限,从机不可以主动访问从机,任何一次数据交换,都要由主机发起(4)不管是主机还是从机,系统一旦上电,都要把自己置于接收状态(...转载 2019-06-11 10:29:57 · 3300 阅读 · 0 评论