原创声明:
本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处。
适用于板卡型号:
AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG
本章以AN3485模块介绍RS485的数据传输。
1.实验原理
前面介绍过RS232和RS422的实验,而RS485与RS422类似,也是采用差分信号传输,但RS485是半双工传输,也就是说,同一时刻只能有一个方向的数据传输。而且接口也比RS422少,只有差分信号A和B,而与ARM或FPGA相连的信号为DE(方向选择),DI(输入信号TXD),RO(输出信号RXD)。
![pIYBAGAKL3eAMEZaAAAvFQukwpU287.jpg](https://file.elecfans.com//web1/M00/DC/2E/pIYBAGAKL3eAMEZaAAAvFQukwpU287.jpg)
从MAX3485文档中,发送方向,如果DE为1时,也就是输出使能,DI值为1时,对于差分信号A和B值为1和0,否则为0和1。
![o4YBAGAKL3eAX3KcAAApc1n3Vao902.jpg](https://file.elecfans.com//web1/M00/DB/AF/o4YBAGAKL3eAX3KcAAApc1n3Vao902.jpg)
从接收来看,如果DE为0,A和B之间差值大于等于+0.2V,则RO值为1,否则为0。
![pIYBAGAKL3iARqweAAAq74gNC7U444.jpg](https://file.elecfans.com//web1/M00/DC/2E/pIYBAGAKL3iARqweAAAq74gNC7U444.jpg)
2.程序设计
由于RS485是半双工传输,那么我们需要制定传输协议进行握手,设定第一个字节为8’h55,表示一帧数据的开始,接下来是传输的数据长度信息,由于FIFO大小限制(256),范围为1~255,接下来是数据。格式即为:起始8’h55+数据长度+数据。
其中uart_tx和uart_rx跟RS232实验一样,在这里只修改uart_test即可。我们设计的功能为初始状态下将DE设为0,也就是输入,等待接收上位机发来的数据,并缓存到FIFO中,FIFO大小设置为256,然后切换DE为1,也就是输出,把接收到的数据从FIFO中读出并发送出去。注意缓存的数据是除去起始8’h55和数量信息的。
在RCV_HEAD状态时,判断接收到的数据是否是”S”。
![o4YBAGAKL3iAJyVGAAAnIA1C_Ds158.jpg](https://file.elecfans.com//web1/M00/DB/AF/o4YBAGAKL3iAJyVGAAAnIA1C_Ds158.jpg)
在RCV_COUNT状态时,如果数据长度小于0,则跳转到IDLE状态,如果大于0,则进入接收数据状态。
![pIYBAGAKL3mAJAohAAAUNm0d4vM793.jpg](https://file.elecfans.com//web1/M00/DC/2E/pIYBAGAKL3mAJAohAAAUNm0d4vM793.jpg)
在RCV_DATA状态下,把数据写入FIFO,并且检查数据长度,切换RS485的方向为输出,并跳转状态。
![o4YBAGAKL3mAU4U_AAAi-06492I903.jpg](https://file.elecfans.com//web1/M00/DB/AF/o4YBAGAKL3mAU4U_AAAi-06492I903.jpg)
在切换总线状态时,为了可靠工作,在WAIT状态下,延时1ms进行方向切换。
![pIYBAGAKL3qAWJnzAAA6lh4HHtc917.jpg](https://file.elecfans.com//web1/M00/DC/2E/pIYBAGAKL3qAWJnzAAA6lh4HHtc917.jpg)
再然后是发送FIFO中的数据,SEND_WAIT状态是控制读使能信号fifo_rden,并且判断数据是否发送完,发送完后进入IDLE状态。
![pIYBAGAKL3qADbEUAABBrBjxaME627.jpg](https://file.elecfans.com//web1/M00/DC/2E/pIYBAGAKL3qADbEUAABBrBjxaME627.jpg)
3. 实验测试
我们仍然使用USB转串口设备,通过杜邦线将RS485_1的A和B分别与设备的A和B连接。
打开串口工具,设置好串口号波特率,选择16进制发送,发送数据以8’h55开头,点击发送,即可在接收窗口看到返回的数据。
![pIYBAGAKL3yAbu61AABL8aC9qZs965.jpg](https://file.elecfans.com//web1/M00/DC/2E/pIYBAGAKL3yAbu61AABL8aC9qZs965.jpg)
-
FPGA
+关注
关注
1631文章
21807浏览量
606726 -
RS485
+关注
关注
39文章
1167浏览量
82691 -
差分信号
+关注
关注
3文章
378浏览量
27792 -
Zynq
+关注
关注
10文章
610浏览量
47364 -
MPSoC
+关注
关注
0文章
199浏览量
24346
发布评论请先 登录
相关推荐
如何调试Zynq UltraScale+ MPSoC VCU DDR控制器
Ti推出面向Zynq UltraScale+ MPSoC的电源参考设计
![Ti推出面向<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的电源参考设计](https://file1.elecfans.com//web2/M00/A6/B2/wKgZomUMP76ATe17AAAcbJsTcs8886.jpg)
Xilinx基于ARM的Zynq-7000和Zynq UltraScale+ MPSoC及RFSoC器件是否存在安全漏洞
Zynq UltraScale+ MPSoC的发售消息
米尔科技Zynq UltraScale+ MPSoC技术参考手册介绍
![米尔科技<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>技术参考手册介绍](https://file.elecfans.com/web1/M00/AA/66/o4YBAF2peUWAOg6KAAMHSiNFbVQ735.png)
如何调试 Zynq UltraScale+ MPSoC VCU DDR 控制器?
![如何调试 <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b> VCU DDR 控制器?](https://file.elecfans.com/web1/M00/DC/1C/pIYBAGAJnL2APVJtAADb7Z67qGU377.png)
米尔电子zynq ultrascale+ mpsoc底板外设资源清单分享
![米尔电子<b class='flag-5'>zynq</b> <b class='flag-5'>ultrascale+</b> <b class='flag-5'>mpsoc</b>底板外设资源清单分享](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ZYNQ Ultrascale+ MPSoC系列FPGA芯片设计
Zynq UltraScale+ MPSoC中的隔离方法
![<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>中的隔离方法](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Zynq UltraScale+ MPSoC的隔离设计示例
![<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的隔离设计示例](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Zynq UltraScale+ MPSoC验证数据手册
![<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>验证数据手册](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论