[X]关闭
0

米联客(MSXBO)FPGA实现基于RS485的串口通信

摘要: 1.1概述RS485通信和UART串口通信本质上一样,区别是RS485在工业控制场合具有更好的抗干扰能力,更远的传输距离。本文主要讲解RS485通信方案的实现,关于串口通信协议的分析,可以阅读米联客(MSXBO)专门介绍串口通信 ...

1.1概述

RS485通信和UART串口通信本质上一样,区别是RS485在工业控制场合具有更好的抗干扰能力,更远的传输距离。本文主要讲解RS485通信方案的实现,关于串口通信协议的分析,可以阅读米联客(MSXBO)专门介绍串口通信部分的课程。

 

1.2硬件分析

如技术参数说明,如果传统的方案需要3根控制线:RE和DE共享1根控制线(DIR),DI(RX)和DO(TX)各一根控制线,才能实现RS485的收发通信。

如下图是我们改进后的设计方案,通过以下方面可以只要2根控制线,原理图分析。

1)、接收数据:默认我们串口总线上RX 和TX 都是高电平,所以这个时候,通过485_TX高电平会控制圆圈处的RE和DE为低电平,这个时候RX就可以接收数据了。

2)、发送数据:当发送数据的时候,只要从485_TX发送串口数据就可以,根据串口协议,串口起始位位低电平0,当串口输出0的时候,会控制RE和DE输出高电平1,由于设置了DI为0,这样SP3485就输出0了,代表了起始位发送,后面的数据位发送一个道理了。

 

 

1.3温习串口协议

       在进行具体的设计之前,先了解串口通信协议。通常串口的一次发送或接收由四个部分组成:起始位S(“一般为逻辑‘0’)、数据位D0~D7(一般为6位~8位之间可变,数据低位在前)、校验位(奇校验、偶检验或不需要校验位)、停止位(通常为1位、1.5位、2位)。停止位必须为逻辑1。在一次串口通信过程中,数据接收与发送双方没有共享时钟,因此,双方必须协商好数据传输波特率。波特率即数据传输速率。根据双方协议好的传输速率,接收端即可对发送端的数据进行采样。常见的波特率标准为300bps,600bps,800bps,9600bps,19200bps等。当然更块的速度意味着对采样的要求更高,有可能误码率会逐渐提高。

      通常对串口进行数据采样,采用更高频的时钟。这样做的目的是采用高频时钟来锁存低频时钟,减少数据的误码率,增加接收模块的自纠错能力。

具体的工作流程为:

      发送端按照预先设定好的波特率,发送起始位(Start)+数据位(data)+奇偶校验位+结束位。其中,起始位为逻辑0,结束位为逻辑1,发送端在空闲状态为1。发送数据包格式如下图所示。

https://www.uisrc.com/data/attachment/portal/201909/06/124329tmumgdmm2crocf9f.jpg

       数据的奇偶校验位是可以选择的,如果不使用奇偶,那么就没有这个数据位,我们本课程中没有用到奇偶校验位。

       接收端通过检测电平‘1’到‘0’的跳变来确定一个数据包的开始。确定开始位接收完成之后,依次接收数据,使用更高的采样时钟,完成数据采集。接收完数据位后,继续接收奇偶校验位和停止位。

       串口的接收与发送,其主要时序设计包括两个部分:1、波特率的产生时序;2、数据传输时序,包括接收与发送。

       波特率产生时序设计:假设FPGA输入时钟100Mhz,为得到常用的波特率,仍然采用计数分频来得到。BAUD_DIV=100_000000/波特率。其中采样中心点为发送或接收时钟的中心点,即BAUD_DIV_CAP=100_000000/(2*波特率)。该部分在数据接收和发送部分均单独完成。

       数据接收模块:在设置好传输波特率的情况下,根据串口传输时序,进行解串。空闲状态时,接收 数据为逻辑高电平,等待起始位逻辑低电平的到来。当起始位到达后,由低位到高位,依次采集8位数据,并进行相应的解串,存入临时寄存器。接收有效数据完成后,判断结束位,接收完毕。

       数据发送模块:设置发送使能信号和待发送的数据。通过计数器,表示10个数据发送的周期。这10个数据,依次为起始位+8位数据位+1位结束位,实现数据位的逐个发送。

本设计中,采用PC机的串口调试助手,发送数据位至FPGA,FPGA接收到数据位之后,立即回传至PC机。具体的设计原理和代码思路,在后续章节逐一介绍。

 

1.4 uart_rx_path 接收代码

         串口接收代码和前面的UART串口通信内容基本一样,主要是加强了起始位滤波抗毛刺干扰的处理,大家还可以增加对数据阶段数据位的去毛刺处理,毕竟工业场合需要更好的抗干扰能力。

uart_rx_path.v

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////////

// Company: 米联客MSXBO

// Engineer:whilebreak


路过

雷人

握手

鲜花

鸡蛋

最新评论

本文作者
2019-10-17 12:38
  • 7
    粉丝
  • 3203
    阅读
  • 0
    回复

关注米联客

扫描关注,了解最新资讯

联系人:汤经理
电话:0519-80699907
EMAIL:270682667@qq.com
地址:常州溧阳市天目云谷3号楼北楼201B
相关分类
热门评论
排行榜