最近笔者画的PCB板子回来了,但是调试485功能的时候,出现了问题 用过485的朋友们都知道,485芯片有两个引脚是控制收发方向的,如果把新唐m0串口配置成485功能,它内部就会有RTS0来控制收发方向:如图: 上图是个实验电路,新唐M0中RTS0的方向正好和485的收发控制方向一致,即RTS0为低,485为接受功能 而笔者的PCB板子上用的是下图:
我们可以看到,它和上图RTS0完全是相反的,即RTS0是低的时候,485芯片的控制是能段是高,这时候485芯片是发送的功能,这就需要牵扯到一个修改触发电平的问题! 具体的大家可以参考手册,这里只说下如何修改程序,将UA_MCR这个寄存器的LEV_RTS置为高电平触发(默认为低电平触发),经过笔者测试,程序是可以用的,但是一开始的时候,我改了触发电平后,还是不能用,那么就开始找硬件原因。 从来没有想到,问题竟然是串口出问题,在嵌入式中,硬件的可信性不高,因为它随时可能是坏的,那怎么知道串口是否是好的,我师兄用了一个方法,那就是用了一个硬币! 将串口放平,针少的一排在上面,针多的一排在下面,面对自己,打开串口助手,选择自动发送,可能你已经猜到了什么方法,那就是自发自收,用硬币接通下面一排插针的2,3两脚(一个是发送引脚,一个是接受引脚,从右向左数),如果显示窗口不断显示出数字,就证明是好的,否则串口就是坏的,笔者拿一个坏的串口一直调试,不管如何自然出不来 硬币的导电性很好,没想到还有这作用
|