话说好久没有更新博客了,接着目前在调试RS485,那就再水一篇,反正没啥技术含量,
我就随性的写,您也就随性的看。
RS485也是一个标准总线,具体的电气使用说明,大家自行百度,这里不再过多介绍,只
是简单的写出几点:
1、RS485是差分信号,连接时候,信号线不需要交叉(也不能交叉,否则容易烧坏芯片);
2、如果是RS485芯片,可以选用5V供电(连接单片机要做电平转换),也可以用3.3V供电 (max3485);
3、RS485是有方向控制的,接收和发送,发送完成后要设置为接收状态,否则不能接收数据;
4、RS485芯片分为有极性和无极性两种,无极性和无极性芯片不能通信,认真查看手册;
我用的RS485电路:
使用中注意:
1、由于数据方向是应用层控制,因此我建议发送用TC中断,不要用发送Buffer空中断,否则最后一个字节有问题;
2、在每次发送完成后,都会接受一个字节0,这个问题是由于当把RS485设置为发送数据态时候,RO会被置低。
解决方法有两种:
1、修改硬件方案,在MCU的RX口加上拉(这个时候,RO口就不能简单的用电阻分压了,改用三极管或者MOS管);
2、修改软件方案,由于RS485是半双工通信,TX和RX不能同时进行,在TX期间禁止RX,TX完成后在打开RX即可;
PS:我就用的软件方案,完美解决;
下面是我抓取的485_4_direction(黄色)和485_4_UART_RXD(蓝色)波形:
从示波器波形,可以发现,在TX期间,RX一直是低电平。(我不清楚是所有的RS485芯片都这样,还是
我买的这颗芯片是这样。)