- RS-485简介
RS-232是单端输入输出,而RS-422/485为差分输入输出。
单端传输是指在发送或接收过程中,用信号线对地线的电压值来表示逻辑“0”和“1”。
差分传输使用两根信号线来传输一路信号,这两根信号线上传输的信号幅值相等,相位相差180度(极性相反),用它们的差值来表示逻辑“0”和“1”。
差分传输方式下,干扰可以通过两个信号线上电压的差值抵消,相当于抑制了共模干扰。
差分传输大大提高了信号在传输过程中的抗干扰能力,但是需要多余的信号线来实现信号传输。 - 实验任务
使用两块开拓者开发板通过RS-485端口互联,由各自开发板上的四个按键分别控制对方开发板上四个LED灯的亮灭。 - 硬件设计
由于FPGA串口输入输出引脚为TTL电平,用3.3V代表逻辑“1”,0V代表逻辑“0”;而RS-485电平标准采用差分信号的差值电压来代表逻辑“0”和“1”。因此当FPGA与RS485接口标准的设备通信时,需要加电平转换芯片SP3485,实现RS485电平与TTL电平的转换。
由于RS-485为半双工通信方式,需要通过使能信号来控制发送和接收过程。在图 17.3.1中,电平转换芯片SP3485的2号引脚为低电平接收使能,3号引脚为高电平发送使能。在这里我们将两个引脚连接在一起,只需要通过一个信号RS485_DE即可控制收发过程:当RS485_DE为高电平时,SP3485处于发送过程;当RS485_DE为低电平时,SP3485处于接收过程。
图 17.3.2为RS232/RS485的选择接口,由上图可知,SP3485芯片端口的RS485_RX和RS485_TX并没有直接和FPGA的引脚相连接,而是连接到开发板的P2口,RS232串口和RS485串口共用P2口的UART2_TX和UART2_RX,UART2_TX和UART2_RX是直接和FPGA的引脚相连接的,这样的设计方式实现了有限IO的多种复用功能。因此,在做RS485串口通信实验时,需要使用杜邦线或者跳帽将RS485_RX和UART2_TX连接在一起,RS485_TX和UART2_RX连接在一起。
- 程序设计
key_debounce为按键消抖模块,在检测到有按键按下或释放时对按键数据进行消抖处理,在按键数据稳定后给出通知信号key_flag,并将数据由串口发送模块uart_send发送出去。uart_recv为串口接收模块,它负责接收对方发送的按键数据,并在一帧数据(8位)接收结束后给出通知信号uart_done。当LED灯控制模块led_ctrl检测到该通知信号时,根据接收到的按键数据改变板卡上LED灯的显示状态。