uart(串口)协议概念(记录用)

1.概念

        1.1.概念

                UART (universal asynchronous receiver-transmitter)是一种采 用异步串行通信方式的通用异步收发传输器;它在接收数据时 将接收到的串行数据转换成并行数据,在发送数据时将并行 数据转换成串行数据来传输。 接收数据:接收设备将接收到的串行数据转换成并行数据 (串转并)。 发送数据:发送设备将数据转换成串行数据来传输(并转 串)。 由于UART是异步通信接口,接收方发送方都有各自的时钟, 在数据传输过程中不需要时钟,发送方发送的时间间隔可以 不均匀,接收方是在数据的起始位和停止位的帮助下实现信 息同步的。而SPI、IIC是同步通信接口,同步通信中双方使用 频率一致的时钟,在数据传输过程中时钟伴随着数据一起传 输,发送方和接收方使用的时钟都是由主机提供的。

        1.2.端口连接

                如图 所示,对于PC来说它的tx要和对于FPGA来说的rx连 接,同样PC的rx要和FPGA的tx连接,如果是两个tx或者两个rx 连接那数据就不能正常被发送出去和接收到,rx和tx都是相对 自身主体来讲的。UART可以实现全双        工,即可以同时进行发 送数据和接收数据。

       1.3. 特点

                UART通信需要两根信号线来实现,一根用于发送(TX),另 外一根接收(RX)。(注意与IIC通信进行区分) 传输速率较低,传输距离短;

                传输速率以波特率为准; 通过奇偶校验对传输数据进行检测,减少数据错误概率;

        1.4. 奇偶校验(重要)

                奇偶校验是一种通信中检验数据传输正确性的方法。 只是对rx和tx模块进行了处理;校验传输的数据是否符合奇偶 校验规则;若符合校验则数据有效;若不符合校验则数据无 效;(法1:vld判断条件增加,无效则vld不拉高!法2:做成 接口,增加一个数据有效标志;) 通常采用哪种校验方式是收发双方事先约定好的,发送端发 送的数据中包括原始数据和1bit校验位,若是奇校验则要保证 发送的数据中“1”的 bit数是奇数个,若是偶校验,则要保证 发送的数据中“1”的bit数是偶数个。例如:采用奇校验时,若 原始数据中“1”的bit数是奇数个,则校验位此时应该为0,若 原始数据中1的 bit数是偶数个,则校验位此时应该为1;反之亦然。

2、 物理层

        2.1. 接口标准

                使用的是rs232标准

        2.2. 串口电平标准

                TTL电平的串口(3.3V) RS232电平的串口(+5~+12V为低电平, -12~-5V为高电平)

        2.3. 串口电气标准

                RS-232-CTXD/RXD/GND、15米/9600bps RS-422:TX+/TX-/RX+/RX-/GND RS485:A/B/G、1200米/9600bps

3、协议层

        3.1. 数据格式

                一帧数据由 4 部分组成。 起始位(1bit) 数据位(6\7\8 bit) 奇偶校验位(1bit)[非必要] 停止位(1bit\1.5bit\2bit)

        

                3.1.1空闲位

                设备之间不传输数据时以持续的高电平表示空闲。空闲位 持续时间越长,两个数据帧间隔也越长,单位时间传输的 数据就越少。

                3.1.2 起始位(低电平)

                UART接收端会一直检测信号线上的电平变化,开始传输数据时,发送端将信号线从高电平拉到低电平结束空闲状 态,并保持低电平一个bit位的时长。接收器检测到高低电 平转换时,开始接收信号。

                3.1.3 数据位

                数据位包含传输的实际数据、奇偶校验位。数据位一般是 6、7、8位。 在一般情况下,数据位为 8 bits,数据首先从最低有效位 开始发送,高位在后(LSB)。

                3.1.4 奇偶校验位

                   UART的“校验位”紧挨着“数据位”,采用奇偶校验方式,根据设置,校验位可以存在也可以不存在

                3.1.5 停止位

                停止位表示一帧数据的结束,实际信号是一段时间的高电 平。停止位的时间长短可以设置为1、1.5或者2bits的停止 位。大部分情况使用1bit的停止位。

                PS.因为UART是一个异步协议,每一帧的开头可以用跳变沿来同步,但是停止位只能通过波特率来计算相对位置,如果在停止位 的位置识别到一个低电平,则会产生帧错误。在通讯过程中,为 了减少波特率的误差导致的问题,可以设置不同的停止位长度来适配。

        3.2. 为什么UART的传输需要起始位?

                因为UART没有控制线,要让接收方知道什么时候开始接收数据,需要一些手段,UART数据的传输中,只有一根线,所以在发送数据之前,先发一位逻辑“0”作为数据发送的起始标志,接收方在空闲时,当检测到有一个低电平,则开始接逐位接收数据

        3.3. 为什么UART的数据位可变?

                因为UART是一种低速总线,每多发一位都占用不少的时间(由传输波特率决定),所以可以根据传输数据的特点,采用不同位宽以节约数据传输的时间

4.UART的波特率

                在使用具体的UART协议前,我们需要对发送端和接收端进行波特率的同步,以此来确保发射端的数据可以在接收端得到正确的采集。常用的波特率可以是300,1200,2400,9600,19200,38400,115200。

        4.1 什么是波特率

                波特率等于每秒钟传输的数据位数,假如我们的全局时钟频率为100MHz,波特率设置为9600,那么意味着每秒该UART传输协议可以传输9600bits的数据,换句话说传输1比特需时间约为:10^9(ns)/9600=104166(ns)

        4.2 如何换算波特率

                时钟频率假如为100MHz,这意味着我们的时钟周期为10ns,因此10416个时钟周期我们就可以传输1bit数据,换言之我们需要一个大小为10416的分频电路来对100MHz时钟进行处理,因此在设计UART的过程中,我们需要使用分频电路依据波特率处理全局时钟,依据分频后的时钟节奏来发送数据和接收数据。

        4.3 波特率和采样频率是一样的吗?

                按照前文所说,好像波特率和采样频率是一个意思,即9600波特率对应接收端1s进行9600次采样,也对应发射端1s进行9600bit的发射,那么请读者思考,真的是这样吗?
答案其实是否定的
                这是因为:在数据的传输中,信号可能受到一些干扰而产生一些抖动(比如说电磁兼容性设计中的近端串扰),如果接收端只对这些信号进行一次采样,那么它有可能采样到的是不准确的数据,所以接收端在采样时,通常都要采样多次,然后通过处理获得准确的数据,比如说,我们可以用多数表决的方法来在接收端进行多次采样,得到准确值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值