80652319 2017-06-22
学习单片机过程中遇到两个问题:
1、写好串口代码,手边没有硬件调试;
2、串口收发出现奇怪的问题,无法定位;
经过百度,百度,再百度后,终于找到了解决方法,那就是:串口收发仿真。不多说,总结如下:
实验需要的软件:VSPD(Virtual Serial Port Driver)、串口调试助手、Keil
环境搭建:
1、VSPD配置:
△点击1处选择两个互相通信的串口,其中一层的串口要和串口调试助手设置的串口相同,且两个串口的串口号是在Keil中可识别的(稍后Keil部分详说);
△选好串口后,点击2处添加;
△ 当要删除串口对时,在串口没被占用的情况下,点击4删除;
2、串口调试助手设置:
⊙设置好相关参数,包括串口、波特率、校验位等,另外为了使接收的数据不出现乱码,采用十六进制发送和显示,如图:
3、Keil设置:
⊙源码编译通过后,打开Debug
⊙在【View】中选择打开【Command window】,如图:点击1和3可以切换到命令窗口和串口数据监视窗口,在命令窗口下,2处为输入命令行;
⊙用命令对串口设置:
△如图,输入命令时,在其下方2处会有命令提示:
△在输入com后会显示出当前系统中可识别的串口(VPSD中设置可参考):
△设置被绑定计算机串口参数,使用mode命令,其后参数与串口调试助手中设置参数相同,命令格式为:
MODE COMx baudrate, parity, databits, stopbits
COMx:计算机串口号(VSPD中设置的串口号);
Baudrate:波特率
Parity:校验方式,0表示无校验,1表示奇校验,2表示偶校验
Databits:数据位
Stopbits:停止位
△设置好参数后需要将单片机串口绑定到计算机串口,使用assign命令,命令格式如下:
ASSIGN channel <inreg> outreg
Channel:计算机串口号,设置好参数的串口;
<inreg>和outreg:代表单片机串口,对于只有一个串口的单片机,即<SIN>和SOUT;对于有两个或多个串口的单片机为<SnIN>和SnOUT(n为0,1,2…)。注意:<SIN>的<>必须带上;
△设置好后,能看到VSPD的串口处有参数:
到此,单片机串口收发仿真的环境就搭建完成了,接下来进行仿真操作。需要注意的是,串口仿真既需要单步调试查看具体情况,也需要全速运行模拟现实的通信。
仿真的串口通信和现实串口测试相似:串口助手模拟上位机发送和接受数据,Keil环境模拟单片机串口,它的串口监视窗口显示单片机从上位机收到的数据。