`
mmdev
  • 浏览: 12934979 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

分析波形信号解决开发板串口连PC后无输出或输出乱码的问题

 
阅读更多

几乎所有的开发板都会支持串口输出调试,但不是每次我们都有那么好运能直接看到串口输出。我自己也遇到过几次串口无输出或输出乱码的问题,这里总结一下。

1.无输出:一般可能是管脚接错了,把接收脚和发射脚掉转有可能会解决问题;另外一个可能是串口的校验位和流控制设置有误。如果确定不是接错也不是设置问题,则可能需要查设计图并检测输出波形。

2.输出乱码:很大可能是波特率设置错了;另外有可能是输出电压不够,因为开发板输出的串口信号电压一般比较低,如果开发板本身没有增强输出模块,则需要自己接一块增压的小板了。

如果问题仍未解决,则需要用信号分析仪器对输出脚的输出波形进行分析了。以我手上这个开发板为例,串口输出是57600bps,8位数据,1位停止位,无校验流控。系统启动通过定时扫描输出调试信息,例如我在等待用户按键时输出了“..huz_5WaitKey..”的信息,通过串口终端可看到以下内容:

把信号分析仪的输入线接到串口的输出管脚,可看到波形输出,拍照并分析如下:

如图经分析可知,串口空闲状态是高电平(看资料介绍理论上在单片机TTL端才是高电平,在电脑RS232端应该是低电平,应该是我当时为了方便分析而把输入信号的正负极掉换了),有数据时会先发一个低电平的起始位,然后是8位数据,最后是一个高电平的停止位,如此循环输出。

其中8位数据是低位在前高位在后,要反过来看才是真正的数据。例如第一个数据帧,收到数据是01110100,反过来是00101110,即46(0x2E),为点号“.”的ASCII码。上图显示数据为

01110100 01110100 00010110 10101110 01011110 11111010

反转过来就是

00101110 00101110 01101000 01110101 01111010 01011111

即:

2E 2E 68 75 7A 5F

译成明文就是:

..huz_

显然是符合我们预期的输出开头的。

另外,图中纵向一格电压为5V,可大概量知输出波形的电压范围为正负5.1V(RS232规定信号电压好像是3V到15V)。横向一格为100us,六帧数据共用时约10.5格即10.5*100us=1050us,每帧数据为10位(8位加起始和停止位),故每一位的所用的时间为1050us/6帧/10位每帧=17.5us,换算成波特率就是1b/17.5us=1b/0.0000175s=571423bps,跟约定的57600比较,误差约为0.79%属于正常范围(一般误差在3%以内是可以接受的)。

由此可见,通过波形分析,我们完全能判断输出的信号是否正常,电压是否足够,波特率是否在允许范围内,输出信息是否正确,对诊断串口故障非常有帮助。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics