今天上班的时候
在用一个单片机写串口发送程序
让上位机不断监听
大多数情况都是正常的
只是每隔几分钟突然掉帧
数据明明是“33”
却变成“30”
还掉了帧
出现如下图情况:
在红色方框中严重掉帧,并且数据明明是"33" 却变成了"30",于是我百度了一下,问题主要有以下几个方面:
(1)波特率:最直接的方法就是降低波特率。(2)发送间隔:如果条件允许,可以将发送端的发送频率降低,采用定时发送的方式,每间隔一段时间发送;如果定时50ms有掉帧,定时100ms试试。(3)上拉电阻:根据网上有些文章提到的方法,还可以在串口接收端增加上拉电阻,有时候即使发送端没有发出数据,接收端也会误接到一些数据,频繁进入中断也会降低单片机处理效率,在电路上增加上拉电阻的目的就在于降低误接的概率,提高单片机的处理效率。 (4)不要使用过长的串口线
(5)使用外部无源晶振,不要使用有源晶振和内部晶振。
(6)检查代码,是不是串口工作时,其他的更加高级的中断打断了串口。这些方法都没有实践过,明天上班再来实践一下吧,如果同学们认为还有其他的问题,留言吧,我明天统一实操。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
串口
+关注
关注
14文章
1509浏览量
74834
发布评论请先 登录
相关推荐
单片机串口如何接收上位机不断发送的数据帧?
各位大虾:本人菜鸟请教一个问题,单片机如何接送串口不断发送的数据帧,并将该帧的有效数据提取出来,请赐教一个完整程序。
注:我用的是89C52
发表于 11-06 07:41
串口断帧的解决方案
该例程可在 STM3220G-EVAL 上运行。使用 USART6 的 DMA 方式收发数据,使用 TIM9 的 Slave Reset 模式: TIM9_CH1用于捕获串口的接收数据波形,并在
发表于 09-22 08:03
串口通信学习笔记
串口似乎是一个比较模糊的概念,UART、COM口、RS-232、RS-485等名称有时都会被称作串口,但是从应用电路上看,三者又显然存在差异。个人理解,我们通常所说的串口是使用串行通信协议的一类接口
发表于 09-20 15:23
•393次阅读
![<b class='flag-5'>串口</b>通信<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>](https://file1.elecfans.com/web2/M00/A3/EF/wKgZomUKnPyAeQhnAAIZpVQd84c372.jpg)
STM32单片机学习笔记(3):虚拟串口
利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。这是第三部分针对串口通信
发表于 07-18 16:40
•2201次阅读
![STM32单片机<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(3):虚拟<b class='flag-5'>串口</b>](https://file1.elecfans.com/web2/M00/8D/11/wKgZomS2TXGATs5UAAAWlrXtcik505.jpg)
评论