串口网口(TCP/UDP)驱动编写
文章平均质量分 65
串口驱动编写,之前的专栏名称是 STM32-串口通信协议 ,但实际已经不仅仅是STM32,也不仅仅是串口,还包括网口TCP UDP
诗筱涵
邮箱:1372740910@qq.com 微信公众号:诗筱涵 技术交流群:960668018
展开
-
单片机UART丢失数据常见的问题
指未及时取走数据导致溢出错误而丢失数据,通常是发生在大量数据、以查询方式接收数据的情况下。在编程时需要考虑通信接口方式,在长距离通信的时候,需要考虑线路上的延时,如果操作不当也会导致数据丢失。使用UART中断接收数据相比查询接收数据的方式更常见,中断方式比查询方式响应更及时,但不合理处理同样也会存在数据丢失的情况。HAL库已经有几年了,但还是有很多工程师都使用标准外设库,这时如果自己封装接口不当,就会存在发送最后一字节数据丢失的问题。在通信波特率较高的情况下,如果时钟误差加大,很可能导致数据丢失。转载 2024-07-10 11:57:18 · 84 阅读 · 0 评论 -
100行代码实现串口与UDP透传/wifi数传
UDP与串口透传,或者说UDP与串口互转,本质是把串口接收到的字符数组/整型数组通过UDP发送出去,把UDP接收到的字符数组/整型数组通过串口发送出去。不管叫字符数组还是整型数组,对应内存存储以及传输的二进制或者十六进制都是一样的。原创 2024-06-29 18:07:32 · 1239 阅读 · 0 评论 -
windows上使用wjwwood的serial库
实际这么试了,是可以的,就可以编译生成serial.lib以及serial_example.cc对应生成的test_serial.exe。之前看到别人写的windows上用wjwwood的serial库的文章,都要先部署一下环境,装catkin什么的。其中一篇有个评论说到。原创 2024-06-21 19:21:02 · 240 阅读 · 0 评论 -
TCP和UDP阻塞和非阻塞之间的区别
我在网络上看到某些人说,阻塞就是将数据真正发送给对方,并且阻塞是发生在需要把前面的所有数据全部发送出去,然后再发送本次的,而非阻塞则是拷贝到发送缓冲区。我不得不说,上面的这种说法是错误的。man 一下 send,发现man里有描述容易误导,send() shall fail.应该是需要自己判断的,会返回实际发送成功的字节,想全部成功发送,需要自己实现一遍阻塞循环发送的逻辑,当多端口*大包发送的时候,可以非阻塞拆包发送(循环每个端口send一次小包,避免单个端口阻塞很久),效果会比阻塞的好很多。转载 2024-05-25 21:47:48 · 204 阅读 · 0 评论 -
大端和小端是字节序,不是bit序
偏航是两个字节表示的,一个字节是8位,一个字节又可以写成两个十六进制表示,因为一个十六进制可以写成4个二进制表示,也就是偏航是16位整型表示,也就是可以写成4个十六进制表示。在小端模式中,较低有效字节(即最低位字节)存储在内存的较低地址,而较高有效字节(即最高位字节)存储在内存的较高地址。一般协议里面写的就是比如这两个字节是代表偏航,或者这四个字节是代表什么,但是这几个字节的顺序是没有明确的,大端小端就是明确这个的。在大端模式中,较高有效字节存储在内存的较低地址,而较低有效字节存储在内存的较高地址。原创 2024-05-14 13:44:03 · 186 阅读 · 0 评论 -
mavlink给的UDP发送接收示例代码,也是基于socket的
mavlink给的UDP发送接收示例代码,也是基于socket的。原创 2024-05-10 14:31:12 · 236 阅读 · 0 评论 -
UDP传大文件 图片 方法整理
UDP分批传图就是这么传的,是啊,现在感觉UDP传输大文件应该有通用的代码。我看很多博文都把前面先发的这一部分叫报头。也有的叫文件头这个真正讲清楚了struct的作用,不过几乎所有文章都是说TCP才需要用这个,UDP不需要。我感觉就像串口发送不定长数据的时候,就在报文里面加上一个长度,这样让接收者知道这一帧的长度是多少。本质可能是一样的。原创 2024-04-27 08:46:07 · 1163 阅读 · 0 评论 -
关于串口接收缓冲区会不会撑不住
波特率115200,对应每秒115200 bit,对应11520字节每秒,读取频率可以设置为50hz,而且缓冲区大小可以设置为300字节,这样就可以保证自己读取接收频率大于发送频率,不丢失数据。原创 2024-04-01 17:46:47 · 403 阅读 · 0 评论 -
写TCP UDP以及串口通信时,整型数组转字符串数组发送的便捷操作
串口通信一个udp通信,发送接口函数都是发送字符串,但是你看那个串口的发送函数ser.write(serial_msg);,注意长度由73改为了72,因为字符串数组一般末尾还会加上个"\0",所以长度会多1,这么改完编译,没有问题,运行,也控制了吊舱转动到指定角度了,看来我的理解是OK的,这么我以后可能不用专门再把整型数组转为一个二进制相同的转义字符串数组了,现在是用reinterpret_cast函数转的,以前我还更麻烦,手动写个转义字符数组出来。原创 2024-03-11 09:44:19 · 498 阅读 · 1 评论 -
状态机”来解析UART不定长度的协议帧
来解析UART数据帧,并且把解析工作放在ISR(中断服务程序)完成,仅当接收到最后一个字节(0x0D)时,再将整个数据帧提交给进程处理。通信设计中考虑协议的灵活性,经常把协议设计成“不定长度”。一个实例如下图:锐米LoRa终端的通信协议帧。那么ISR处理这个状态机来得及吗?答案是:so easy!如果一个系统接收上述“不定长度”的协议帧,将会有一个挑战--,C语言仅3条语句,翻译成机器指令也不超过10条。为简化系统设计,我们强烈建议您采用“如有侵权请联系我删除。转载 2024-03-31 10:09:22 · 73 阅读 · 0 评论 -
关于PX4飞控为什么也适合做无人车无人船
PX4飞控呢,则是正好和板卡通信有现成的mavlink协议,可以基于串口,PX4飞控,也正好可以输出PWM波控制电机转动,这种情况下用PX4控制小车可能比用普通的STM32控制小车,在开发量上相对小一点,至少不用自己折腾一些串口上的通信协议等等的,还有一些PID量的调节可能也方便许多,不用自己再去专门写相应的PID代码,当然我们不用PX4,清楚上述原理,也是可以自己拿个普通的STM32板子驱动小车的,并且是接收NX的指令控制小车。中间什么PID就不说了。原创 2024-03-19 22:27:23 · 615 阅读 · 0 评论 -
单片机串口最底层的本质 (转载)
单片机串口最底层的本质嵌入式专栏 今天关注+星标公众号,不错过精彩内容来源 |网络嵌入式开发中,UART串口是最常见的一种通信接口,你知道为啥串口这么常见吗?本文就带你深入了解串口最底层的本质内容。一、什么是串口通讯?串行通讯是指仅用一根接收线和一根发送线就能将数据以位进行传输的一种通讯方式。尽管串行通讯的比按字节传输的并行通信慢,但是串口可以在仅仅使用两根线的情况下就能实现数据的传输。典型的串口通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,...转载 2021-09-25 12:18:49 · 543 阅读 · 0 评论 -
串口发送有几种写法? (转载)
串口发送有几种写法?嵌入式大杂烩 前天关注「嵌入式大杂烩」,选择「星标公众号」一起进步!STM32用USART发送字符串,USART_FLAG_TXE和USART_FLAG_TC怎么用?一:STM32用USART发送字符串 void UART_Send_Message(u8 *Data){ while(*Data!='\0') { USART_SendData(USART1, *Data); ...转载 2021-09-25 12:13:52 · 500 阅读 · 0 评论 -
关于char 和char *类型,有时候函数需要char * 可以通过下面这种方式转换
关于char 和char *类型,有时候函数需要char * 可以通过下面这种方式转换https://gitee.com/maxibooksiyi/linux_udp_tcp_maxi_test/blob/master/HTTP/%E4%BE%8B%E7%A8%8B%E4%B8%80/httpclient.c原创 2021-09-14 10:46:23 · 265 阅读 · 0 评论 -
很多朋友“字节序“和“bit序“分不清~(转载)
转载自:很多朋友"字节序"和"bit序"分不清~很多朋友"字节序"和"bit序"分不清~嵌入式情报局 昨天以下文章来源于最后一个bug ,作者bug菌1、剖析字节序 1)对于字节序其实很多小伙伴应该都是非常熟悉了,平时大家也都叫它"大小端",不过也有一部分小伙伴可能只是简单的知道它的概念,并没有在实际的代码开发中去深入了解,作者这里详细解析一下这个问题,同时也为后面的bit序铺垫。 2)既然叫"字节序",那么其描述的是字节的顺序问题,如果对于单个字节而言是没有字...转载 2021-09-13 21:54:47 · 671 阅读 · 0 评论 -
一些十分有用的字符串相关的函数,在写串口解析,TCP HTTP通信时有用
写串口TCP HTTP,这方面感受颇深,也遇到不少对吧。写数据解析时的常用函数在字符串中查找字符串。strstr我觉得有了str很多解析写起来会轻松快很多。字符串合并函数字符串连接函数strcat,这个可以好好用用_TYINY的博客-CSDN博客熟练用这两个函数写http应该还好感觉有必要总结一些字符串常用函数。还有strlen判断字符串长度,这个在TCP发送有用到https://gitee.com/maxibooksiyi/linux_udp_tcp_maxi_...原创 2021-09-12 00:39:59 · 245 阅读 · 0 评论 -
实际开发中,写的都是基于UART CAN TCP等更上一层的协议(相对而言的应用层协议),UART CAN TCP这种已有通用的协议早已经有现成的包或者API可以用。
实际开发中,写的都是基于UART CAN TCP等更上一层的协议(相对而言的应用层协议),UART CAN TCP这种已有通用的协议早已经有现成的包或者API可以用。真正别人产品所提供的也是这种更上一层的协议,别人没必要跟你把UART CAN TCP讲一遍。。...原创 2021-09-08 21:40:35 · 198 阅读 · 0 评论 -
Linux内核Socket CAN中文文档
转载自:https://www.cnblogs.com/eaggle/p/7641406.htmlLinux内核Socket CAN中文文档 转载自:http://blog.csdn.net/zhangxiaopeng0829/article/details/7646639自己在年假中空闲之余翻译的内核中Socket CAN的文档,原文地址在:http://lxr.linux.no/linux+v2.6.34/Documentation/networking/can.txt但是这篇文转载 2021-09-07 15:44:14 · 3301 阅读 · 0 评论 -
ros读取CAN数据并发布话题
转载自:https://www.cnblogs.com/AI-ZZH/p/15009451.htmlros读取CAN数据并发布话题 项目需要读取底盘编码器的can数据 并将其发布为话题,记录下涉及到的知识,若日后涉及将topic数据通过can发布到底盘亦应记录在后 供参考。Socket原理讲解 https://blog.csdn.net/pashanhu6402/article/details/96428887Socket详解 https://blog.csdn.net/sight_..转载 2021-09-07 10:02:04 · 2192 阅读 · 0 评论 -
自动驾驶系统:CAN与ROS通信
转载自:https://zhuanlan.zhihu.com/p/48632100自动驾驶系统:CAN与ROS通信Gen Li睡午觉的滋味,妙不可言。不当调包侠。最近接触到自动驾驶系统通信网络,特别是CAN与ROS通信问题,练习解决后,希望通过本文记录问题解决步骤,了解不深,如有错误还望指出。通常,传统OEM的车辆控制网络使用CAN或CAN-FD,优点是速度相对较快,当通信冲突时可根据优先级高低进行传输,例如汽车发生碰撞时,ECU通过CAN向气囊模块发送起爆信号。对自动驾驶汽车,特别转载 2021-09-07 09:42:56 · 4384 阅读 · 1 评论 -
这个HTTP的解析和我写串口通信的思想很像。就是对缓冲区出现的各种可能的情况都要分别做处理。
这个HTTP的解析和我写串口通信的思想很像。https://blog.csdn.net/huyanping/article/details/48162181。原创 2021-09-06 14:01:08 · 116 阅读 · 0 评论 -
CAN总线详解 整车的控制只需要一条线(怪不得那些汽车厂商的嵌入式岗位基本都是要求会CAN的)
怪不得那些汽车厂商的嵌入式岗位基本都是要求会CAN的转载自:https://mp.weixin.qq.com/s/qbN0-BtQ_q2GYEV7V_o5WA干货分享:CAN总线详解 整车的控制只需要一条线土豆居士 一口Linux 昨天CAN(“Controller Area Network”,控制器局域网)作用:将整车中各种不同的控制器连接起来,实现信息的可靠共享,并减少整车线束数量。可以设想一种极端情况,如下图所示:如:果整车上所有的用电设备都是一个独立的CAN总线节转载 2021-09-05 00:27:40 · 2074 阅读 · 0 评论 -
UART串口通讯协议解析(这里用示波器显示串口每个Bit的高低电平,感觉很棒,深入本质。看来以后也可以用示波器调试串口。)
这里用示波器显示串口每个Bit的高低电平,感觉很棒,深入本质。看来以后也可以用示波器调试串口。怪不得有的岗位要求会示波器。有个同事也买了小型示波器好像?转载自:https://mp.weixin.qq.com/s/xvAOBbvwsuWUgn75Ny4esAUART串口通讯协议解析原创 XH1479 记帖 3月2日不点蓝字,我们哪来故事?概述通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UAR...转载 2021-08-22 09:52:29 · 3112 阅读 · 0 评论 -
GPS串口驱动的调试(NEMA协议的直接用nmea_navsat_driver功能包即可)
GPS串口的调试这是用串口助手接收到的信息原创 2021-08-21 20:02:25 · 3872 阅读 · 10 评论 -
看到怒飞垂云的 一节课讲明白所有串口协议-Mavlink/ubx/诺瓦泰/NMEA/自定义协议/变帧长/定帧长 也是很有感触
看到怒飞垂云的 一节课讲明白所有串口协议-Mavlink/ubx/诺瓦泰/NMEA/自定义协议/变帧长/定帧长 也是很有感触http://www.nufeichuiyun.com/?page_id=121这里面我接触的有mavlink 定帧长 变帧长 自定义协议 NEMA 还有一些摄像头的所以我觉得这些都有必要熟练掌握,会写对应的串口驱动。。...原创 2021-08-19 14:58:57 · 902 阅读 · 0 评论 -
pixhawk(PX4)的串口使用总结
首先pixhawk 4上面只有四个串口,一个给了GPS,一个是TELEM1 一个是TELEM2 一个是UART&I2C B 对应接口可以参照下面holybro的pxihawk4的飞控板。一般TELEM1插wifi数传,TELEM2插板载计算机,PX4的用户指南默认这么设置的https://blog.csdn.net/sinat_16643223/article/details/119535123...原创 2021-08-09 13:28:54 · 8983 阅读 · 27 评论 -
弄过光流模块之后现在也清楚IIC的用法了,用在多个器件,一个接口上面,可以片选,所以PX4也有专门的IIC扩展板
弄过光流模块之后现在也清楚IIC的用法了,用在多个器件,一个接口上面,可以片选,所以PX4也有专门的IIC扩展板因为光流模块一般要和测高模块一起用嘛,所以相当于一个板子上有两个器件十轴模块我想也是的。...原创 2021-08-07 01:36:40 · 276 阅读 · 0 评论 -
怪蛙带你通全栈 第12讲:串行总线
转载自:https://mp.weixin.qq.com/s/vTmFTYnK8QwtdwMCnHml0g怪蛙带你通全栈 第12讲:串行总线原创 怪蛙 编程外星人 今天 在这一节里我们来一起完成STM32F407VE中的串行总线功能。所谓串行总线就是我们常常说的串口。串口中的信号线(数据线)只有2条,一条线为Tx,另一条为Rx,也就是发送线和接收线。所以称它为串行,就是通过一根信号线的产生一个序列的高低电平来完成数字信号中一个字节的数据。例如:我们知道计算机中都是采用二进制来表...转载 2021-08-04 11:32:31 · 684 阅读 · 1 评论 -
PX4的基于串口的遥控器SUBS协议也存在大小端的区分需要注意
PX4的基于串口的遥控器SUBS协议也存在大小端的区分需要注意下面拍自《一本书看懂多旋翼》P313原创 2021-08-03 23:59:02 · 410 阅读 · 0 评论 -
STM32 UART串口读取解析个人总结(基本找到标准解析写法)
STM32 UART串口读取解析总结参考这三篇博文https://blog.csdn.net/sinat_16643223/article/details/119226462https://blog.csdn.net/sinat_16643223/article/details/118830297https://blog.csdn.net/sinat_16643223/article/details/119307624方式两种:终端和查询大部分是中断,用中...原创 2021-08-02 02:50:07 · 9060 阅读 · 0 评论 -
优象光流提供的解码例程(STM32层面的UART串口读取解析)
flow_decode.c#include<stdint.h>#include"flow_decode.h"UpixelsOpticalFlow updata;int16_t flow_parse_char(uint8_t ch){ int16_t ret = 1; static int16_t s = 0, p = 0; static uint8_t Xor_r = 0x00, Xor_c = 0x00; switch(s) {原创 2021-08-02 01:14:41 · 1931 阅读 · 0 评论 -
原来固定翼上那么多舵机是用SBUS总线连接的
原来固定翼上那么多舵机是用SBUS总线连接的拍自《多旋翼无人飞行器嵌入式飞控开发指南》原创 2021-07-31 23:00:22 · 938 阅读 · 0 评论 -
STM32实现UART串口通信有两种:中断法和查询法(似乎大部分用的中断法)
STM32实现UART串口通信有两种:中断发和查询法拍自《STM32单片机应用与全案例实践》P112原创 2021-07-30 01:39:10 · 3796 阅读 · 0 评论 -
真正自己实现里UDP通信之后我发现有没有网络调试助手也不重要了,因为我serv端就可以打印显示我端口接收到的数据了,他们写网络调试助手的本质也不过如此
真正自己实现里UDP通信之后我发现有没有网络调试助手也不重要了,因为我serv端就可以打印显示我端口接收到的数据了,他们写网络调试助手的本质也不过如此,所以可以网上看到别人自己写里网络调试助手然后放出来,确实就很好写。https://github.com/kangear/NetAssistant这个人说代码不多我现在是真的信https://blog.csdn.net/hfyutdg/article/details/86525502...原创 2021-07-28 19:35:20 · 138 阅读 · 0 评论 -
ROS实现串口GPS数据的解析与通信(这篇文章所用的代码和我买的带有ROS功能包的GPS模块的功能包的代码一样)
转载自:https://blog.csdn.net/weixin_43795921/article/details/85219249ROS实现串口GPS数据的解析与通信何伯特 2018-12-22 23:37:55 7123 收藏 86 分类专栏: ROS 文章标签: 串口 通信 ROS GPS版权1. 配置串口配置串口时,利用ROS自带的serial功能包进行串口数据的读取,具体来说就是创建一个串口对象,用成员函数read进行读取,需要注意的是其中Timeout的设置以及read转载 2021-05-25 08:43:03 · 2253 阅读 · 1 评论 -
ACfly UART驱动程序讲解,基于freertos
见我B站视频https://www.bilibili.com/video/BV1bK411A7sE原创 2020-10-27 09:28:58 · 711 阅读 · 0 评论 -
结合通信协议和FIFO,解决串口阻塞的方案
转载自:https://mp.weixin.qq.com/s/LdFhwrqeHPdgwJ9Yl3wgUg结合通信协议和FIFO,解决串口阻塞的方案嵌入式专栏 6月29日关注+星标公众号,不错过精彩内容编排 | strongerHuang来源 |zhzht19861011串口(UART)是最常见的通信之一,由于串口应用非常广泛,其通信方式也是各种各样。比如传输总线:RS232、 RS422、 RS485、 TTL等。通信协议:Modbus、 MavLink、..转载 2021-07-16 23:35:50 · 901 阅读 · 2 评论 -
我看不管是网络编程还是串口编程,都定义了结构体,这可能才是标准写法
串口编程22:53:00https://mp.weixin.qq.com/s/6PBbNMfg3-TnibVfuyYEJQ23:23:05https://mp.weixin.qq.com/s/LdFhwrqeHPdgwJ9Yl3wgUg原创 2021-07-16 23:30:08 · 95 阅读 · 0 评论 -
如何实现自定义串口通信协议?(我感觉写得不错,可以作为标准参考)
转载自:https://mp.weixin.qq.com/s/6PBbNMfg3-TnibVfuyYEJQ如何实现自定义串口通信协议?嵌入式大杂烩 今天以下文章来源于strongerHuang ,作者strongerHuang关注「嵌入式大杂烩」,选择「星标公众号」一起进步!来源:strongerHuang有一些初学者总觉得通信协议是一个很复杂的知识,把它想的很高深,导致不知道该怎么学。同时,偶尔有读者问关于串口自定义通信协议相关的问题,今天就来写写串口通信..转载 2021-07-16 23:06:19 · 6128 阅读 · 0 评论 -
一文彻底搞懂大小端字节序(转载)
转载自:https://blog.csdn.net/weixin_36623563/article/details/106533745一文彻底搞懂大小端字节序Sam, Xu 2020-06-03 21:51:41 1070 收藏 9 文章标签: c++版权一文彻底搞懂大小端字节序文章目录 一文彻底搞懂大小端字节序 1.基本概念 1.1大端字节序(big-endian) 1.2小端字节序(little-endian)转载 2021-07-13 11:52:12 · 279 阅读 · 0 评论