RS485测试#

本章介绍两路RS485接口的读写测试实验。

硬件环境搭建#

基于”ps_hello”工程,另存为一份rs485_test工程

  1. 第一路RS485用的是PS端的UART0,而DE信号用的是MIO9,GPIO MIO已经勾选上。

../_images/image1102.png

配置时钟频率为100MHz

../_images/image280.png

打开PL端中断

../_images/image340.png
  1. 添加AXI GPIO模块,并配置为输出,位宽为1,用于第二路RS485的DE控制

../_images/image436.png
  1. 添加UART16550模块,用于第二路RS485的数据端口

../_images/image530.png
  1. 自动连接

../_images/image628.png ../_images/image727.png
  1. 删除UART引脚,并展开UART接口

image1image2

  1. 添加constant模块,并设置位宽为1,值为1

../_images/image1015.png
  1. 连接ctsn,rin信号

../_images/image1120.png
  1. 再添加一个constant模块,值设置为0

../_images/image1217.png
  1. 连接freeze,dcdn,dsrn信号

../_images/image1315.png
  1. 将sin和sout导出引脚

../_images/image1414.png
  1. 连接中断信号到ZYNQ的IRQ_F2P接口

../_images/image1514.png
  1. 修改引脚名称

../_images/image1613.png
  1. 引脚绑定

../_images/image1713.png
  1. 生成bitstream

../_images/image1813.png
  1. 导出硬件平台信息

../_images/image1913.png

Vitis程序开发#

  1. 新建Vitis工程rs485_test,本实验是根据UART和UART16550模块的example工程修改而来,程序流程为,初始化RS485 DE和UART设置RS485 0为发送,设置RS485 1为接收,发送16个字节数据,接收后进行数据对比反向,设置RS485 1为发送,设置RS485 0为接收,发送16个字节数据,接收后进行数据对比程序结束

../_images/image2012.png
  1. 注意要进行BSP的设置,将打印输入输出改成ps7_uart_1,也就是PS端的UART

../_images/image2116.png ../_images/image2214.png
  1. PS端GPIO设置MIO9为输出,因为它是连接在RS485 0的DE上的。

../_images/image2313.png
  1. PL端GPIO设置,连接到RS485 1的DE

../_images/image2412.png
  1. 在对UART初始化中,将PS端UART和PL端UART16550都设置为波特率115200,8bit,无奇偶校验位,1bit停止位

../_images/image2511.png
  1. 在回环的函数中,首先是将RS485_0设置为输出,RS485_1设置为输入,设置完后,在发送数据之前等待1ms时间,是因为有切换延迟。

../_images/image2610.png
  1. 测试后,切换方向RS485_0设置为输入,RS485_1设置为输出,再次进行数据发送

../_images/image2710.png

板上验证#

  1. 用杜邦线将A1与A2连接,B1与B2连接如下:

../_images/image287.png
  1. 下载界面设置

../_images/image297.png
  1. 串口打印信息

../_images/image307.png

本章小结#

本章介绍了利用板子上的两路RS485进行回环测试,大家可以在此基础上功能扩展进行测试。