0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机串口设置问题如何解决

j4AI_wujianying 来源:陈翠 2019-06-29 11:31 次阅读

最近测试涉及到底层串口代码的修改。经过这次修改,突然发现其实自己对于串口的一些特性以前并不是十分清楚。

首先遇到的一些问题:

1)在使用IO的数据位的时候,没有考虑校验位所占的位数。

2)在设置串口输入的时候,使用悬空输入。

关于1),在一次使用STM32串口参数9600,N,8,1与另一个 8051MCU通信的时候发现偶校验没有问题,但是无校验通信就出现异常。但是,当将STM32与电脑通信的时候,偶校验与无校验通信又完全都是正确的。8051MCU单独与电脑通信也都是完全正确的。查看代码,还真不知道有什么不对劲的。因为这段代码,用了很长时间了。后来一个同事看代码后,提醒说对于数据位的设置,偶校验和无校验是一致的,既然没有数据位,有可能会少一位。从这点看,这段代码可以修改看看。于是在这个地方,将偶校验的时候数据位长度设置为9bit,无校验的时候设置为8bit。重新测试,发现通信正常了。

原来这段代码,由于一直用偶校验进行通信,所以对于奇校验和无校验的参数设置,没有测试过。虽然,已经存在很长时间,但是由于一直没有用到奇校验和无校验,于是这个BUG。一直潜伏到现在。直到这次使用到才发现。

关于2),是在一次使用中发现,串口线的连接如果与从机分离,则串口上会莫名接收到一些00数据。一开始没有在意,以为是离开确定电平后,导致的什么干扰造成的。但是,没有去考虑是什么造成接收这么容易受干扰。直到有一次,和同事确认串口的初始化电平设置时,他告诉说是悬空设置。这下子感觉不对了,悬空很容易造成受干扰。于是马上查看串口的初始化代码,发现确实是悬空设置。马上修改了。在测试,将连接的串口悬空,也没有再收到。

后来查看了关于串口的内容发现以前有些东西没有注意到:

串口分为同步串口,异步串口。

这里说的串口指通常说的UART,异步串行通信接口

还有就是同步串口,即SPI,I2C之类。

首先,UART不需要接收和发送两端严格的时钟同步,在不通信的时候IO电平呈现高电平,即空闲。所以对于UART来说,如果没有数据交互,数据线是呈现高电平的。

对于UART的数据位问题,是包含数据+校验的bit数总和。

为了提高UART的抗干扰性,无论在哪一种工作模式下,都能够保证数据线上有稳定的电平。所以串口设置时,对于串口输入引脚设置为上拉输入。对于串口的设置,输出一般设置为push-pull,输入一般设置为pull up。

(这里有一个疑问,为什么串口还会留下悬空输入?既然一般情况下,上拉输入对于接收方而言会处于一个比较稳定的状态。如果将输入设置为悬空输入反而会引入接收不稳定的因素,为什么会有悬空输入。在什么地方,又会使用悬空输入呢?在不同电压的时候可能是一种情况,及3.3VTTL电平的CPU,与5.0VTTL的CPU直接使用串口通信的时候,为了避免电平问题采用悬空有可能是一个种情况。)

这里也提出一个问题,对于系统的底层代码要格外严谨。保证开发出来的代码,有高的稳定性,可靠性。才能保证其他程序顺利开发。

同时对于代码的测试要尽可能覆盖所有代码。对于开发过程中,引入的功能及代码要进行实际测试,明确其执行到的时候对于程序的影响。没有运行过的代码,在程序中就是一座可能喷发的活火山。所以对于添加的功能及代码,要确保执行过。

在开发过程中,要时刻保持警惕,警惕可能出现异常的地方,学着用推理去找到BUG的巢穴。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634681
  • uart
    +关注

    关注

    22

    文章

    1235

    浏览量

    101355

原文标题:最近遇到的单片机串口设置问题

文章出处:【微信号:wujianying_danpianji,微信公众号:单片机精讲吴鉴鹰】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    51单片机串口通信原理与应用

    本文我们主要讲单片机串口的工作原理和如何通过程序来对串口进行设置,以及根据所给出的实例实现与PC 通信。
    发表于 01-08 13:51 9737次阅读

    单片机串口设置

    我想的,只要把单片机上面的串口参数和虚拟里面对串口的参数设置相同,他们就可以通信了。具体的我是这样做的。这是虚拟
    发表于 01-13 07:40

    MC51单片机与PC 串口通信

    这一讲将介绍单片机上的串口通信。通过该讲,读者可以掌握单片机串口的工作原理和如何通过程序来对串口进行
    发表于 05-21 15:51 153次下载
    MC51<b class='flag-5'>单片机</b>与PC <b class='flag-5'>机</b>的<b class='flag-5'>串口</b>通信

    单片机串口通讯程序

    基于51单片机单片机串口通讯程序源代码
    发表于 11-16 19:15 37次下载

    什么是单片机串口通信?

    串口通信是单片机一个重要的部分,单片机和PC,单片机单片机之间的通信大都用串口
    发表于 07-25 07:36 6.1w次阅读
    什么是<b class='flag-5'>单片机</b>的<b class='flag-5'>串口</b>通信?

    使用51单片机进行串口通信的串口设置资料免费下载

    本文档的主要内容使用51单片机进行串口通信的串口设置资料免费下载
    发表于 06-14 17:44 12次下载
    使用51<b class='flag-5'>单片机</b>进行<b class='flag-5'>串口</b>通信的<b class='flag-5'>串口</b><b class='flag-5'>设置</b>资料免费下载

    怎样去设置单片机串口的工作模式

    单片机串口有四种工作模式。
    的头像 发表于 10-17 16:04 5457次阅读

    单片机串口实验 串口介绍 串口原理

    文章目录1 串口的硬件初步认识2 中间桥梁芯片硬件电路3 电脑如何识别 中间桥梁芯片4 串口调试助手5 为什么需要CH340模块6 CH340模块可以换成别的吗7 单片机开发版设计理念18
    发表于 11-10 20:20 16次下载
    <b class='flag-5'>单片机</b>的<b class='flag-5'>串口</b>实验 <b class='flag-5'>串口</b>介绍 <b class='flag-5'>串口</b>原理

    串口通信详解(51单片机

    串口传输,实现单片机与PC的双机通信。串口控制(51单片机)实现单片机与PC
    发表于 11-12 10:06 81次下载
    <b class='flag-5'>串口</b>通信详解(51<b class='flag-5'>单片机</b>)

    51单片机串口中断功能的设置

    51单片机串口功能就是和外界进行通讯,所谓的“外界”也就是与单片机进行交互的媒介,最常用的就是我们经常使用的计算机、平板或者其他设备(比如另一个单片机配合显示模块使用)。既然和外界需
    发表于 11-14 19:51 74次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>串口</b>中断功能的<b class='flag-5'>设置</b>

    51单片机串口通信

    51单片机串口通信文章目录51单片机串口通信串口介绍硬件电路电平标准常见通信接口比较相关术语51单片机
    发表于 11-18 14:06 22次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通信

    通过232串口设置MSP430F149IPM单片机液晶显示时间的程序

    通过232串口设置MSP430F149IPM单片机液晶显示时间的程序下面介绍一段通过232串口设置MSP430F149IPM
    发表于 11-19 16:51 1次下载
    通过232<b class='flag-5'>串口</b><b class='flag-5'>设置</b>MSP430F149IPM<b class='flag-5'>单片机</b>液晶显示时间的程序

    51单片机串口通信

    51单片机串口通信文章目录51单片机串口通信串口介绍硬件电路电平标准常见通信接口比较相关术语51单片机
    发表于 11-21 20:36 64次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通信

    单片机学习笔记————51单片机实现从串口收发

    单片机学习笔记————51单片机实现从串口收发
    发表于 11-23 17:06 42次下载
    <b class='flag-5'>单片机</b>学习笔记————51<b class='flag-5'>单片机</b>实现从<b class='flag-5'>机</b>的<b class='flag-5'>串口</b>收发

    单片机串口通信乱码问题

    单片机串口通信乱码问题问题:测试51单片机串口通信时,设置主程序为单片机将接收到的数据发送出去,
    发表于 12-23 19:05 10次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通信乱码问题