找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2098|回复: 10
打印 上一主题 下一主题
收起左侧

发现一个单片机串口的奇怪问题,求分析

[复制链接]
跳转到指定楼层
楼主
最近发现一个串口的迷惑行为。
单片机型号:STC8
频率:24MHz


今天准备使用串口对程序进行调试,结果发过来的内容总是出现各种错误。于是我用示波器看了一下波形。不看不知道,一看下巴都要惊掉了!!


学过串口通信原理的师兄都知道,串口起始位是低电平0,停止位是高电平1。但STC8的硬件串口外设居然会反着来。看图:



图1发送的是字符“A”,图2发送的是数字0x55
但吊诡的事情就来了,图中的“正确波形”指的是理论上应该有的波形,而示波器实际测出来的波形却与其有不少出入。后来我发现,STC8单片机居然把起始位和停止位对调了。


我同时也用光标测量了最小脉冲宽度,大约0.83ms ≈ 833μs,说明波特率和时钟都是正确的。


求大神解答一下为什么会出现如此奇怪的情形


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:226055 发表于 2021-1-6 10:38 | 只看该作者
    1、楼主可以把STC8的单片机型号全称注明下吗?因为STC8下系列种类较多,不同型号可能会有所不同。
    2、本人有使用STC8A8K64S4A12单片机,该型号单片机官方手册给出了发送过程说明及示意图,明确了起始位是低电平,停止位是高电平。


  发送过程:串行通信模式发送时,数据由串行发送端TXD输出。当主机执行一条写SBUF的指令就启动串行通信的发送,写“SBUF”信号还把“1”装入发送移位寄存器的第9位,并通知TX控制单元开始发送。移位寄存器将数据不断右移送TXD端口发送,在数据的左边不断移入“0”作补充。当数据的最高位移到移位寄存器的输出位置,紧跟其后的是第9位“1”,在其左边各位全为“0”,这个状态条件,使TX控制单元作最后一次移位输出,然后使允许发送信号“SEND”失效,完成一帧信息的发送,并置位中断请求位TI,即TI=1,向主机请求中断处理。
    3、楼主亦可把程序关于串口配置及发送的源码贴出。



评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:390416 发表于 2021-1-6 11:42 | 只看该作者
TXD 口需要推挽
回复

使用道具 举报

地板
ID:176854 发表于 2021-1-6 11:46 | 只看该作者
是不是将串口设置成9位的工作模式了?检查一下串口的寄存器设置是否有误
回复

使用道具 举报

5#
ID:224104 发表于 2021-1-6 12:02 | 只看该作者
cocolala 发表于 2021-1-6 10:38
1、楼主可以把STC8的单片机型号全称注明下吗?因为STC8下系列种类较多,不同型号可能会有所不同。
    ...

问题已经解决了,不过还是谢谢您
回复

使用道具 举报

6#
ID:224104 发表于 2021-1-6 12:03 | 只看该作者
jjjjjjir 发表于 2021-1-6 11:46
是不是将串口设置成9位的工作模式了?检查一下串口的寄存器设置是否有误

已经找到问题的关键了,谢谢
回复

使用道具 举报

7#
ID:224104 发表于 2021-1-6 12:03 | 只看该作者

好的,多谢提醒
回复

使用道具 举报

8#
ID:224104 发表于 2021-1-6 12:06 | 只看该作者
发现了两个问题,已经解决了:1、波形是正确的,没有问题,应该是先发低位,再发高位。我给搞反了,但这并不是问题的关键
2、核心原因在这里:http://www.51hei.com/bbs/dpj-201131-1.html
     帖子正在审核,稍微等等就能看到了
回复

使用道具 举报

9#
ID:440403 发表于 2021-1-6 12:16 | 只看该作者
guysxpf 发表于 2021-1-6 12:02
问题已经解决了,不过还是谢谢您

什么问题说清楚啊
回复

使用道具 举报

10#
ID:807591 发表于 2021-1-6 13:09 | 只看该作者
两仪式 发表于 2021-1-6 12:16
什么问题说清楚啊

就是不说
回复

使用道具 举报

11#
ID:224104 发表于 2021-1-6 14:56 | 只看该作者
两仪式 发表于 2021-1-6 12:16
什么问题说清楚啊

就是单片机已经开始发送字符了,但电脑那边还没准备好接收。
导致电脑误把低电平数据位当成了起始位,导致数据错位,最终出现传输错误
具体的在这里
http://www.51hei.com/bbs/dpj-201131-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表