本人最近使用AT89C52做的一个小项目中,MCU需要通过UART与PC和一个DSP模块通信,最开始我直接将MCU_TXD与232_RXD以及DSP_RXD相连,MCU_RXD与232_TXD以及DSP_TXD相连,结果是MCU与DSP通信正常而与PC则不正常,后来本论坛上有人建议在DSP_TXD及232_TXD与MCU_RXD处反串两个二极管,然后在MCU端上拉电阻。结果20套板子中总是偶尔会出现一两个与PC通信有时正常有时不正常的现象。如下图: https://bbs.21ic.com/upfiles/img/20072/2007212172751237.jpg 后来经理找了一个华东师大的教授,让我问问他。他说不能这样接,否则就会出现不稳定现象,就是我现在的这种情况。他说要么就换用双串口的CPU,要么就使用数据选择器。于时我就加了数据选择器,如下图2: https://bbs.21ic.com/upfiles/img/20072/2007212172820263.jpg 常态下:P3.4=1,当需要MCU与DSP通信时P3.4=0。现在的问题是:第2路与第3路正常,即:MCU_TXD与PC_RXD以及MCU_TXD与DSP_RXD正常,PC和DSP都可以收到MCU发送的数据,可以PC和DSP反回到MCU的数据却是接收不到。图中画是的74LS157,实际采用的是74HC157,我查了一下发现LS和HC型Vol,Voh,Vil,Vih是不同的。不知是不是这个原因造成的,这算不算电平不匹配呢,但HC157是LSTTL,应该还是属于TTL的吧,高手请指点一下。
|