分析波形信号解决开发板串口连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%以内是可以接受的)。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值