串口通信波特率数据错乱

避坑指南:用ESP8266给STM32F103联网时,90%人会遇到的5个串口通信问题 本文详细解析了使用ESP8266为STM32F103开发板实现联网时,90%开发者会遇到的5个典型串口通信问题,包括波特率匹配、AT指令无响应、数据丢包等。通过硬件调试技巧和软件优化方案,如DMA配置和定时器使用,帮助开发者有效解决STM32与ESP8266的通信稳定性问题,提升物联网设备开发效率。 阅读详情

如图,串口助手有两种模式,分别是hex模式和文本模式,但是我在测试发送数据时,16进制遇见了奇怪的现象.

switch(tempbuf)
				{
					case 0: P2_0=0;//unsigned char tempbuf;
					break;//tempbuf = SBUF;
					case 15: P2_1=0;
					break;
					case 16: P2_2=0;
					break;
					case 48: P2_3=0;
					break;
					default: P2=0XFF;
				
				}

代码如上,但是这个时候只要上电P2_0就会是低电平,可能是因为单片机变量初始化的时候就默认为0所导致的.

所以我做了实验验证,定义一个变量,如果他为0,则P2=0;然后8灯全亮,结论成立.但是我在查资料时,发现还有例外.

(7条消息) 51单片机有关变量及初始化问题_小黄瓜的博客-优快云博客

引用如下

"如果定义一个变量,不对这个变量进行初始化,其变量默认初值为0。虽然大部分正确,但也是在一定条件下,即所有程序中所有变量占用的字节之和要小于128B,大于128B必须初始化,否则默认值是不确定。同时超过了128B还需要在keil 中重新设置存储器存储模式:

  1、small 

  2、compact

  3、large

这三种也相当于最小模式下 定义变量用pdata 、 xdata  如 u8 pdata A[20],xdata u16 data[100] l来定义."

于是重新设置初始化后继续操作,这次发现,我发送0-15数据时正确,但是发送16(0x10)

单片机要么不亮,要么亮的错位.

经过多方排查,发现是波特率设置错误

我选择的是工作方式1,所以波特率计算公式为:波特率 =(2^SMOD / 32) * 定时器T1的溢出率,SMOD为PCON寄存器的最高位值(0或1)

经过计算为2^0/32/(256-0xfd)*10000000=10416而我选择的波特率是9600,误差8%

要解释原因,先看概念

比特率(Bitrate)表示每秒钟传输的二进制位数,单位为比特每秒(bit/s)。

波特率(Baudrate)表示每秒钟传送的码元符号的个数,是衡量数据传送速率的指标。

码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。

然后发送的符号通过高低电平实现,

 如图,5个码元,当波特率为5收到的数据为01010,化为16进制为A

如果波特率为10,收到的数据变为0011001100,化为16进制为CC

修改波特率后,问题解决.

51 单片机串口通信避坑指南:3 个关键点确保 JDY-31 蓝牙模块稳定收发 本文详细解析了51单片机与JDY-31蓝牙模块串口通信的稳定性优化方案,涵盖硬件连接、波特率配置、数据收发处理等3个关键点。针对常见的通信错乱、连接不稳定等问题,提供了实用的调试技巧和错误恢复机制,帮助开发者确保蓝牙模块稳定收发数据。 阅读详情

相关推荐

避坑指南:ESP32串口通信(UART)开发中常见的5个错误与解决方法

本文深入解析ESP32串口通信(UART)开发中的5个常见错误及解决方案,包括缓冲区配置、中断风暴、引脚冲突、波特率偏差和DMA传输问题。通过实战案例和代码示例,帮助开发者规避陷阱,提升通信稳定性与效率,特别适合物联网和嵌入式系统开发者参考。

weixin_30664615的博客 135

串口助手收发数据时波特率过高会乱码

在STM32printf重定向实验中,使用printf向串口输出信息时,输出数据会出现乱码现象或者数据缺失现象,如图: 理应输出122位数据,当波特率为115200时,输出为2位,并且乱码。 解决方法:将波特率调低,以9600为例 如图

phflovelt的博客 7335

HC-05蓝牙模块从零配置指南:手把手教你用AT指令设置主从模式(附常见问题排查)

本文提供HC-05蓝牙模块的全面配置指南,详细讲解如何使用AT指令设置主从模式,包括硬件连接、AT指令集、主从配对实战及常见问题排查。涵盖模块参数、指示灯状态分析、数据透传优化等实用技巧,帮助开发者快速掌握HC-05蓝牙模块的应用与调试方法。

weixin_29215815的博客 634

串口的波特率误差对数据发送影响

问题:如果波特率误差为0.16%,连续发送多少个数据后,会出现错误数据在网上看了下,都说在2.5%的误差范围下,可以保证可靠传输,可最近有个程序在误差0.16%的情况下,连续发送5000个数据左右后,出现一次发送错误回答1:误差必须少于5%。当串口抖动的时候,CH芯片和某些低端的串口卡,兼容性稍差。可能和采样的算法有关系。起始位+数据+停止位 ,共十位,至少4倍频才能正确采集,那么一个数据包至少采...

坚持 3万+

Android手机直连FT232模块的USB串口通信工程(Gradle结构完整,即插即用)

一套开箱即用的Android USB串口通信示例工程,专为FT232系列芯片(如FT232RL)设计,无需额外安装驱动,插入支持OTG的安卓设备即可收发串口数据。项目基于标准Android Studio Gradle构建,包含app模块、预集成usb-serial-for-android库(位于libs目录)、可调节波特率/数据位/停止位/校验位的配置界面,以及适配Android 6.0+的动态权限申请逻辑。工程已配置USB设备过滤规则(intent-filter + device-filter.xml)、

code8的博客 202

TMS320F2812 DSP的SCI串口通信完整可运行工程(CCS 3.3,含烧录文件与外设初始化代码)

一套开箱即用的TMS320F2812 DSP SCI串口通信实验工程,基于标准C语言编写,专为CCS 3.3开发环境优化。包含主程序SCI.c、SCI烧录文件SCI.sbl、项目配置SCI.pjt,以及完整的底层支持模块:DSP28_InitPeripherals.c负责外设初始化,DSP28_Sci.c封装SCI寄存器操作,DSP28_PieVect.c提供中断向量表,DSP28_Gpio.c和DSP28_Adc.c支持GPIO与ADC扩展,配套链接脚本EzDSP_RAM_lnk.cmd和F2810.cm

hh234的博客 189

关于使用STM32CubeIDE开发STM32F4ZGT6时串口波特率不正确、接受数据乱码问题

在使用STM32CubeIDE开发使用STM32F4ZGT6的串口(USART1)时,设置了波特率为115200,在使用串口调试助手接收数据时发现串口的波特率不是115200,导致了接受的数据乱码,串口的配置如下: 串口1(USART1)配置为异步通信,波特率为115200,数据长度8位,无校验位,1位停止位。同时系统的时钟配置如下: 最后翻看开发板的数据手册发现,所使用的外部晶振与STM32CubeIDE时钟配置界面默认的晶振频率不同。也就是...

m0_56041246的博客 2605

串口通信+多线程+数据错乱自动恢复+串口断开自动连接

Qt串口通信+多线程+数据错乱自动恢复+串口断开自动连接

波特率偏差对UART通讯的影响

通讯原理 UART(Universal Asynchronous Reciver/Transmitter),通用异步收发器,异步通讯说明无时钟信号,通过检测数据包中的起始位和停止位来接收数据,数据通信格式如下: 图1:UART数据通信格式 起始位 数据位 奇偶校验位 停止位 1 bit(低电平) 通常为1Byte 1 bit(可选) 1 bit(高电平) 波特率与时钟的关系 时钟因子 = 时钟频率 / 波特率 = 时钟频率 * 位周期 波特率:在1个单位时间内能传输的数据量(单位bit

SCzeidan的博客 5551

手把手教你用EG2153搭建开关电源:SOP-8封装驱动芯片的5个设计技巧

本文详细介绍了使用EG2153自振荡半桥驱动芯片搭建开关电源的五个核心设计技巧。内容涵盖从深入理解芯片工作机制、频率编程计算误区、SOP-8封装的热管理方案,到死区时间评估与外部保护电路设计,以及实战调试与故障排查指南,旨在帮助工程师实现稳定可靠的小功率电源设计。

weixin_29200485的博客 380

水文预报新手别怕!用Matlab 18小时搞定马斯京根法参数K和x(附完整代码)

本文详细介绍了如何使用Matlab在18小时内快速掌握水文预报中的马斯京根法参数K和x的求解方法。通过完整的代码示例和分步解析,帮助新手从理论到实践快速跨越,解决传统手工试算耗时耗力的问题,提升水文预报的效率和精度。

weixin_42573113的博客 259

全志XR806芯片 串口修改波特率后与目标波特率不匹配如何解决?

1、问题背景 有客户反应,XR系列MCU在修改完串口波特率后,打印输出的是乱码,通过仪器抓波形发现输出的波特率与设置不一致。 2. 问题描述 串口修改波特率后与目标波特率不匹配。 3. 问题分析 XR系列MCU的波特率理论计算是baund=apb_freq/(16*div),其中apb_freq是APB总线时钟频率,div是分频系数,div计算结果采用去尾法会产生误差。板级文件board_config.h 中BOARD_APBS_CLK_SRC以及BOARD_APBS_CLK_FACTOR可配置APB时钟总

DOT小文哥的博客 946

【超详细】基于YOLOv8的PCB缺陷检测

印刷电路板(PCB)瑕疵数据集:是一个公共的合成PCB数据集,由北京大学发布,其中包含1386张图像以及6种缺陷(缺失孔,鼠标咬伤,开路,短路,杂散,伪铜),用于检测,分类和配准任务。本文我们选取了其中适用与检测任务的693张图像,随机选择593张图像作为训练集,100张图像作为验证集。

weixin_45679938的博客 2万+

at91sam7x256之串口uart0设置之二

<br />搞了两天,at91sam7x256之串口uart0终于搞定了,<br />一开始出现的问题是发送出来的数据不对,但是用串口调试助手给开发板发送数据,然后直接回送没有问题。<br />原因是串口波特率设置不对,我把晶振频率FOSC作为系统主时钟MCK用了,虽然检查半天控制寄存器US_CR和模式寄存器US_MR各个位的值设置都没有问题,也是不行的。<br />看了开发板例程中的board .h头文件,我才知道原来晶振频率FOSC作为系统主时钟MCK不同:<br />#define AT91B_MAI

xjq2003的专栏 4639

AI工程化之生成式UI & A2UI(二)

本文介绍了生成式UI框架A2UI的架构设计与核心实现。项目采用AI协作开发模式,通过ATDD(AI驱动的测试驱动开发)确保代码质量。前端SDK基于zustand实现框架无关的状态管理,包含协议解析器、存储管理、渲染器等核心模块。重点展示了基础store构建、A2UI协议解析器的实现过程,包括mock数据准备、测试用例生成和可视化调试。项目采用monorepo管理,利用vite实现高效开发构建。整个系统设计遵循模块化原则,通过清晰的接口定义实现各组件解耦,为后续功能扩展打下基础。

qq_34306228的博客 407

Arduino程序设计(十四)舵机控制实验(SG90)

本文介绍SG90舵机控制原理及实验,主要内容有:1、介绍SG90舵机;2、舵机0°~180°来回转动;3、串口控制舵机转动固定角度。(1)舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。在需要角度不断变化并可以保持的控制系统中应用广泛。如遥控机械人、飞机模型等。(2)舵机的转动角度为0~180°,其内部结构包括电机,控制电路和机械结构三部分。电机有三根线引出,分别接VCC、GNG和信号线。

Alice的博客 1万+

ZLG嵌入式笔记 | 串口数据错乱?从标志位设置入手

使用原始输出,就是禁用输出处理,使数据能不经过处理过滤的完整地输出到串口。当 OPOST 被禁止,c_oflag 其它选项也被忽略。有用户反馈“串口应用层数据错乱、与发送端发送的字节数不匹配”,简单来说就是接收和发送的数据不对,而且还存在帧数据错乱的情况。经排查,是程序没用设置ISIG标志位设置引起的。本节以此为切入点进行展开,对串口设置的一些标志位进行简单说明。本文将快速介绍串口标志位的作用及配置方法,帮助解决数据传输错误。启用输出处理需要在 c_oflag 成员中启用 OPOST 选项。

ZLG_zhiyuan的博客 623

在 Ansys CFX Pre 中配置 RGP 表的分步指南

掌握在 Ansys CFX Pre 中设置 RGP 表的技巧,以优化仿真精度和效率。

jkh920184196的博客 1671

51单片机多机串口通信仿真:从硬件协议到Proteus实战

串口通信是嵌入式系统中最基础且广泛使用的数据交换方式,其核心原理在于通过异步串行传输实现设备间的可靠数据收发。在单片机应用中,多机通信技术解决了单一主机与多个从机协同工作的难题,其技术价值在于通过硬件寻址与软件协议的结合,高效管理总线冲突,实现稳定可靠的主从式网络。典型的应用场景包括工业控制、传感器网络和分布式设备管理。本文聚焦于经典的51单片机,深入解析其内置的多机通信硬件机制,特别是SM2位与TB8/RB9位的协同工作原理,并通过一个完整的Proteus仿真项目,演示如何构建一主多从的通信系统。项目涵盖

weixin_42525264的博客 281

AutoJs调用DeepSeek大模型接口实战教程 AutoJs接入DeepSeek、 DeepSeek API调用 、 手机脚本接入大模型

通过这篇文章,我们用 AutoJs 成功接入了 DeepSeek Chat API。使用发送请求在 Header 里正确携带 API Key从里拿到最终返回结果这样一来,你就可以在 AutoJs 里实现一个智能助手脚本,甚至做更复杂的 AI 自动化工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 474

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

hal_uart_transmit底层驱动架构深度剖析与实现原理

深入解析hal_uart_transmit的底层驱动机制,揭示其在嵌入式系统中的核心工作流程。通过剖析数据发送过程与硬件交互逻辑,展现hal_uart_transmit如何高效管理UART通信,提升开发调试效率。

weixin_42627459的博客 670

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

STM32读取匿名光流数据——与Guidance的光流和超声波做对比测试

使用两个串口同时读取匿名光流和Guidance数据:用以比较两个光流的效果 Github链接:https://github.com/W-yt/YuTian_Pro/tree/master/Guidance%26Ano_Read 遇到的问题: 匿名光流连接上位机用HID通信读取光流数据,符合通信协议。 但是使用串口助手读取光流数据发现不符合光流通信协议,无帧头。 原因...

qq_40464014的博客 1765

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LPC21xx UART1硬件流控与FIFO配置实战指南

串口通信(UART)是嵌入式系统中最基础且广泛使用的异步串行通信接口,其原理基于起始位、数据位、校验位和停止位构成的帧格式进行数据传输。在高速或大数据量场景下,简单的轮询方式易导致数据丢失,因此需要引入流量控制机制来协调收发速度。硬件流控通过RTS/CTS信号线实现全双工通信的速率匹配,能有效防止缓冲区溢出,提升通信可靠性。结合FIFO缓冲区和中断机制,可大幅降低CPU开销,实现高效稳定的数据传输。本文以NXP LPC21xx系列ARM7微控制器为例,深入解析其UART1模块的16字节收发FIFO、分数波特

weixin_30140399的博客 327

Linux串口编程,高阶知识

对于串口并不陌生,使用了N遍,总以为理解很深刻,实际上还有很多细节未知。 近期在处理新的板子发现串口收发很不正常,经常少一些数据、莫名其妙数据被串改了,导致校验通不过,现象很诡异 例如存在以下几种现象,可能就是这个问题: 程序在接收数据时,0x13,0x11 总是收不到。 串口发送方发 0x0D,接收方收到 0x0A; 串口发送方发 0x0A,接收方收到 0x0D。 有时候,在用write发送...

小刚专栏 226

【Tools】Linux串口设备调试技巧(sftty)

串口设备是linux系统中最基本的设备之一,在嵌入式linux开发中几乎是必不可少的。由于串口使用简单、广泛,除了使用一路串口作为调试终端输出外,还会使用串口作为外部设备的连接总线。

只要思想不滑坡,想法总比问题多。 3756
上一篇: CH340模块3.3V和5V切换
下一篇: C++char类型显示输出实际存储和判断相等
chenmozero
博客等级 码龄5年 2粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值