跳至内容
深圳市捷比信实业有限公司 · 产品选型与采购咨询联系业务人员
LED灯珠捷比信 · 专业器件主题站

[ZYNQ Ultrascale + MPSOC FPGA教程]第13章RS485实验

原始声明:该原始教程是由信义电子技术(上海)有限公司(ALINX)创建的。版权归我们公司所有。如果需要重印,则需要授权并注明出处。适用于板型号:AXU2CGA / AXU2CGB / AXU3EG / AXU4EV-E / AXU4EV-P / AXU5EV-E / AXU5EV-P / AXU9EG / AXU15EG实验中的Vivado项目为“ rs485_test”。本章介绍了使用AN3485模块进行RS485数据传输。 1.实验原理之前已经介绍了RS232和RS422的实验,并且RS485与RS422类似,并且使用差分信号传输,但是RS485是半双工传输,也就是说,在RS485上只能有一个方向的数据传输。同时。并且接口小于RS422,仅差分信号A和B,与ARM或FPGA连接的信号为DE(方向选择),DI(输入信号TXD),RO(输出信号RXD)。从MAX3485文档来看,如果DE为1,即启用输出,则发送方向;当DI为1时,差分信号A和B分别为1和0;否则为0。否则,它们为0和1。从接收的角度来看,如果DE为0,并且A与B之间的差大于或等于+ 0.2V,则RO值为1,否则为0。2.编程设计由于RS485是半双工传输,因此我们需要制定传输协议,该协议执行握手。第一个字节设置为8h55,它指示数据帧的开始。接下来是要发送的数据长度信息。由于FIFO大小限制(256),范围是1〜255,下一个是数据。 。格式为:起始8’h55 +数据长度+数据。其中,uart_tx和uart_rx与RS232实验相同。在这里只能修改uart_test。我们设计的功能是在初始状态下将DE设置为0,即输入,等待从主机接收数据,然后将其缓冲在FIFO中,将FIFO大小设置为256,然后将DE切换为1 ,即输出。接收到的数据从FIFO中读出并发送出去。注意,缓冲的数据是初始的8h55,并且删除了数量信息。在RCV_HEAD状态下,判断接收到的数据是否为“ S”。在RCV_COUNT状态下,如果数据长度小于0,则跳至IDLE状态;如果数据长度大于0,则进入接收数据状态。在RCV_DATA状态下,将数据写入FIFO,检查数据长度,将RS485的方向切换为输出,然后跳转到该状态。当切换总线状态时,为了可靠地工作,在WAIT状态下,方向切换要延迟1ms。然后将数据发送到FIFO中,SEND_WAIT状态将控制读取使能信号fifo_rden,判断数据是否已发送,并在发送后进入IDLE状态。 3.在实验测试中,我们仍然使用USB连接串行设备,并通过杜邦电缆将RS485_1的A和B连接到设备的A和B。打开串行端口工具,设置串行端口号的波特率,选择要发送的十六进制,然后从8’h55开始发送数据,单击“发送”,您可以在接收窗口中看到返回的数据。