完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
适用于板卡型号:
AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG 实验Vivado工程为“rs485_test”。 本章以AN3485模块介绍RS485的数据传输。 |
|
|
|
实验原理
前面介绍过RS232和RS422的实验,而RS485与RS422类似,也是采用差分信号传输,但RS485是半双工传输,也就是说,同一时刻只能有一个方向的数据传输。而且接口也比RS422少,只有差分信号A和B,而与ARM或FPGA相连的信号为DE(方向选择),DI(输入信号TXD),RO(输出信号RXD)。 从MAX3485文档中,发送方向,如果DE为1时,也就是输出使能,DI值为1时,对于差分信号A和B值为1和0,否则为0和1。 从接收来看,如果DE为0,A和B之间差值大于等于+0.2V,则RO值为1,否则为0。 |
|
|
|
程序设计
由于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”。 在RCV_COUNT状态时,如果数据长度小于0,则跳转到IDLE状态,如果大于0,则进入接收数据状态。 在RCV_DATA状态下,把数据写入FIFO,并且检查数据长度,切换RS485的方向为输出,并跳转状态。 在切换总线状态时,为了可靠工作,在WAIT状态下,延时1ms进行方向切换。 再然后是发送FIFO中的数据,SEND_WAIT状态是控制读使能信号fifo_rden,并且判断数据是否发送完,发送完后进入IDLE状态。 |
|
|
|
实验测试
我们仍然使用USB转串口设备,通过杜邦线将RS485_1的A和B分别与设备的A和B连接。 打开串口工具,设置好串口号波特率,选择16进制发送,发送数据以8’h55开头,点击发送,即可在接收窗口看到返回的数据。 |
|
|
|
只有小组成员才能发言,加入小组>>
2379 浏览 7 评论
2794 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2261 浏览 9 评论
3335 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2427 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
754浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
543浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
364浏览 1评论
1960浏览 0评论
681浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 22:29 , Processed in 1.388339 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号