之前的电子工程师知识结构体系构建系列文章,还没有结束。后期在我不忙的时候还是会跟进。今天写写串口,最近项目上遇到些问题,让我觉得有必要花时间总结一下,因为永远不要忽视细节的重要性。所以花少量的时间,说一说。给大家提供一些思路,同时也是我自己的一个回顾。
以下主要从两个方面来展开:
一、串口RS232 通信的重要性。
二、RS232调试中的一些小技巧。
一、串口RS232通信呢,在单片机开发中占有非常非常重要的地位。为什么这么说呢?
1、RS232通信是人与机交互的重要渠道。
众所周知,我们的代码在编写完成之后一定存在着大量的bug。程序写完了不叫完成,调试运行稳定了才算成功。那么很多时候,程序的运行效果我们无法能够直观的看到,怎么办?串口打印!把程序中定义的变量数据通过串口打印的方式,把它们返回到电脑,通过串口助手来帮助我们判断程序的运行效果。有人说,还可以仿真调试。是的,确实是也可以仿真调试。这个是个人习惯使然,但是起码这又是一项调试的技能。更何况,我曾经遇到过很多次仿真的过程中出现这样那样的错误,会有些不稳定的因素在里面。我更加信任这种串口打印的方式。
2、RS232是设备受控与控制的重要的数据传输途径。
这个没什么可说的,通过串口采集设备中传感器或者其他终端中的一些数据啦,上位机通过串口给设备发送控制命令啦。这一发一收之间,有太多的例子可以列举。
3、RS232是其他多种通信方式的基础。
也有人说,RS232都多少年的老技术了,现在电脑上都没有这个接口了,老吊呀了。但是我不这么认为:
1)、串口RS485是不是从RS232的基础上发展起来的。正是因为RS232只能实现点对点的传输的这种局限性,才有了RS485这种一对多的传输方式。在此基础上,才又有了Modbus协议首先在485通信上实现?
2)、目前市面上的蓝牙通信、wifi通信,这些目前比较新的通信方式中,要在单片机上实现,还是需要通过串口来进行转接。
二、串口调试中的一些小技巧
1、判断串口芯片是否正常。参见MAX232的框图,使用万用表测量2脚和6脚,只要2脚的电压在+8V~+9V之间,6脚在-8V~-9V之间,就基本可以断定这个芯片是好的。这个方法可以在串口通信故障的时候,用来排查硬件原因。
2、当串口调试不通的时候,可以将TX线和RX线进行短接,这样相当于说,发送了什么数据,就可以原样接收什么数据。如果能够完成这一动作,可证明发送方一端的通信是正常的。
3、用printf实现串口打印。
通过把printf函数和相应使用的串口对应起来,可实现串口打印功能。调试更加方便。我所用的是PIC32单片机.具体实现方法如下:
首先在程序文件中包含 #include "stdio.h" 这个标准输入输出的头文件。然后在程序中添加如下函数代码:
注意,这里使用的是哪个串口,就把对应的串口寄存器对应到这里。这里意思是对串口进行重新定向。以便printf能够找到要打印哪个串口里面的数据。
不同的单片机可能实现起来方法不太一样。
4、串口调试中,最基本也是最容易忽视的一点,不要带电插拔。串口非常容易因为带电插拔而损坏。不要因为懒惰而侥幸,很可能下一次的插拔之后,串口芯片就废了。
5、串口通信的距离大概是50英尺,大概15米的样子。当然这是个理论数据。常规的那种灰白色的串口线,我试过三根串起来的距离,通信还没有问题。当然,这个传输的距离和通信的波特率是有关系的。如果通信距离越远,那波特率相应的设置就要低一些。否则数据就会出现乱码。
大家有没有更好的经验与心得呢?欢迎留言,一起学习,进步!