顶风:在单片机系统中,CPU与外部的通讯方式有2种,串行通信――数据一位一位的顺序传送,速度慢,传输距离长。并行通讯――数据的各为同时发送,速度快,但距离短。8051单片机内部包含一个全双工的串行通讯接口,能够方便的与外界通信。串行通信有两种方式:同步串行通讯、异步串行通讯。
YEEC:解释一下同步和异步。
顶风:这个可太多了,我敲不过来了,手册上有,大家慢慢看吧。简单的说异步通讯速度慢,同步通讯速度快。我搞过同步通讯,速度很快,12MHZ能到1M,但距离很短,仅限于电路板上CPU和芯片间的数据传输。异步通讯是单片机远距离通讯的首选方式,也是今天讲MAX232的原因。
顶风:异步串行接口电平规范总共三类:RS-232、RS485、20MA电流环。 其中我只用过RS-232通讯,速度最大20KB/S,距离15米。
顶风:RS-232的电平采用负逻辑,具体是这样的: 逻辑1:-5V~-15V、逻辑0: +5V~+15V
YEE::就是说是TTL电平是不是?
顶风:不是TTL电平,是RS-232规范规定的电平。TTL电平逻辑1是2.4~5V,逻辑0是0~1.3V(大约是这个范围,精确数据请查阅相关手册)。这个电平不能满足远距离数据传输的要求。只有提高电平电压,才能保证远距离传输的数据可靠性。所以,单片机的TX和RX管脚电平需要进行转换才能进行远距离通讯。原来完成电平转换使用2个芯片:MC1488,MC1489进行电平转换,一个用于传输,一个用于接收。这两种芯片需要±12V供电,使用非常不便。自从MAXIM公司开发了MAX232芯片以后,就方便多了:此芯片使用+5V供电,完成RS-232电平转换,芯片的外观如下图:
此芯片,含有2组收发口,我只用过一组,两组全用的情况没有用过。具体外围的电路接法,手册上有推荐的电路,拿来用就是了,至于它内部如何产生232电平,那不是我们所关心的。
顶风:这个图是我当初搞单片机和计算机通讯的时候画的,大家看看,具体接法就是这个样子的。
YEEC:大家注意看,这个图跟ABX的一样。
顶风:是的,标准接法,不一样就错了!左边的RXD(12)和TXD(11)接到8051单片机的RXD和TXD管脚上。
YEEC:11,12能否整体和13,14兑换。
顶风:不行,但换用另一组通讯接口是可以的。
顶风:右边我用的是DB9接口。其实232接口有很多信号定义的,用DB25接口。我这个简单,用DB9接口就够用了。下面讲讲我设计这个电路的臭事吧,给我一生的教训。我当时无论如何不能建立和微机的通讯,整整困扰了我一周的时间。好在我不太傻,我吧DB9的2、3脚短路,编了个小程序,让单片机自己发送,自己接收,没问题啊!我把微机的串口的2、3脚也短路,编了个小程序去试,也没问题。
YEEC:数据线没有反相?
顶风:反相了。后来才发现我犯了个极其愚蠢的错误,我看手册的时候,没有主义那个管脚的定义针对DB25接口的,上面指出使用2、3、7(GND)脚,而DB9接口使用2、3、5(GND)脚,难怪不能通讯呢。这个事情给我教训太深刻了,那段日子,时间很紧,我迟迟弄不出来,都快崩溃了。我还特别爱面子,不愿意求助,后来只好到论坛上贴帖子。等贴完了,我立刻意识到自己的错误了,马上改过来了,立刻通过了。第二天,我的信箱里面有10多封信,几乎全是说我肯定是这个问题的,我知道天外有天,以后就不敢造次了。
YEEC: 问题一:C10,12的0.1U电容如果损坏能够影响通讯么
顶风:能够影响,电平达不到±15V,如果距离不远,也凑合能用。(202使用0.1U的电容,232用1U的电容。)
YEEC:能给解释每个管教得定义和如何判断这个芯片是否完好么
顶风:每个管脚的定义PDF文件上都有的,我好久也不看了,几乎都忘了。大约通过英文就可以望文生义了。比如说12脚是R1OUT,我们就可以知道这个是第一组串口的接收输出端,应当接到计算机的RXD脚上。这个芯片一般不坏的,里面有防静电击穿电路的,我从来没有遇到过这个片子坏的情况,一般量一下13、14脚的逻辑电平,在手册规定的范围内,就没有问题。
YEEC: 目前采用这个芯片的血球经常被损坏,有时候甚至会损害到CPU,大多是带电插拔造成的
顶风:是的,带电插拔是个坏习惯,很容易烧片子。静电虽然电压高,但能量小,45KV不能造成这个片子的损坏。要是带电插拔,24V就足够要这个芯片的命了。
边缘天龙:关主机,不管电脑插拔,会不会烧片子?
YEEC:最起码要保证主机和电脑有一个是关机的,还有就是做好接光电隔离器。
顶风:是的,但我比较懒惰,现在片子也便宜,很少用光隔离的,这个习惯不好,以后改正。工业控制中光隔离应用非常广泛,因为使用现场条件太差了。实验室的条件好多了,甚至比民用环境还要好,一般光隔离意义不大,所以你看我们的仪器中光耦用量是很少的。
YEEC:老顶,我这里有个实测数据,你根据这个讲讲测试好坏的方式和办法。11、12接CPU,13、14接电脑
顶风:这个最好对着手册看啊。你看T1IN(11)是5V,那么T1OUT(14)应该在-5V到-15V之间,再看看实测数据,我们知道这路是好的。其他的依照这个方法判断就行了。T2那组没有用,就不用理它了。
YEEC:我用这个办法来判断这个芯片的好坏和间接判断CPU的好坏。间接判断CPU,量11脚,发射瞬间会出现低电平,发射结束恢复高电平,否则怀疑CPU。测量14脚,发射瞬间接近0,发射结束恢复到-9,否则202损坏。
顶风:是的。我一般这样啊:拔掉CPU,用短路线把T1IN分别接0和5V,然后看232T1OUT的输出电平,就能判断232输出路的好坏了。YEEC好仔细,还量得这么详细,这点我就马虎多了。
YEEC:不是,你的方法是标准方法,但是在现场很难找到能够把下CPU和连线的工具。我们以前搞电路的时候就是按照你说的方法测的。
YEEC:我还遇到过C1C2 0.1U的瓷介电容开路造成无法通讯得情况,本来以为仅仅是匹配用得,看来用处很多。
顶风:这个电容我从来不用推荐的电解电容的,我用CBB电容,非常稳定的,没有坏过。202使用0.1U的电容,更方便了。
YEEC:判断串口故障除了刚才老顶和我说的步骤外,还有几个判断无法通讯故障的步骤。第一,检查信号线的通断和顺序。如果不好进行下一步,不用随机安装的软件,用WINDOWS自带的超级终端进行测试。如果能收到长串ASCLL码,就说明主机,计算机,线缆没有问题,问题出现在软件上,需要调整或者重新安装。如果超级终端不能接受到,问题出现在主机上。
顶风:另外,也有一些串口调试软件,用起来也是比较方便的。
|