一、原理
通过芯片将232信号转换成485信号,485表示0和1的方法:Va - Vb 的电压差在2~6V时表示1,Va - Vb 的电压差在-2~-6V时表示0。这样传输不容易受到干扰,并且传输距离长。我们需要做的事情就是发送:使能DE(driver enable),接收:使能nRE(设置为低电平,recive enable)。半双工方式进行通信,AB在同一时刻,要么只能发要么只能收。
二、RS485应用编程
2.1 标准用法(不需要手工设置)
在Linux的串口驱动中,它已经支持RS485,可以使用RTS引I脚控制RS485芯片的DE引I脚,分两种情况:
- 有些UART驱动:使用UART的RTS引脚
- 有些UART驱动:使用GPIO作为RTS引脚,可以通过设备树指定这个GPIO。
当要发送数据时,在uart驱动程序中去设置RTS引脚电平为高来发送数据。接收数据时设置引脚为低电平。这样在应用程序就不用去设置引脚电平了。
6ull内核源码中对rs485引脚的设置。
rk3568内核源码中对rs485引脚的设置。
2.2 自己控制引脚(可以使用GPIO的方法控制)
发送数据前,使能DE引脚,接收数据前,使能RE引脚。