串口通信波形与收到的数字不一致

2019-03-24 20:34发布

本在在做串口实验的时候,用PROTEUS来仿真,这个实验很简单,就是利用上位机软件控制LED灯的亮灭,在用PROTEUS中的虚拟终端模拟的时候,发现一个这样的现象,求解释:
1.利用十六进制的形式发送数字1——9,利用示波器测量波形
2.在程序中,定义一个数组,在串口接收完成中断函数中将UDR的值赋给数组
3.将实际发送的数字,程序接收到的数字,与示波器测量到的波形进行对比,得到如下现象:发送的数字的ASCII与示波器显示的波形能够匹配得上,但是接收到的数字就完全不一样了,什么原因造成的呢?

另外关于发送数据的时候,起始信号是必须的,那么起始信号是否占用一个串口时钟周期,如果这样的话,再加上一位停止信号,那么就应该是10位才对,可是为什么我所测到的波形都是只有9位数呢?


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
仙猫
1楼-- · 2019-03-24 23:03
1.从4张波形图看,通信线上分别是字符'1'、'2'、'3'、'4',ASCII码的0x31、0x32、0x33、0x34,不带校验位。
2.可能是TTL或CMOS电平信号,而不会是RS-232C电平信号(两者的逻辑是反的)。
3.如果收到的内容不对,先检查收发波特率是否设置得一致。
4.“停止位”已被隐藏在“空闲”里所以看不到,因为两者是同样的电平。

一周热门 更多>