UART的一点总结

 
串口即通用异步收发器(UARTUniversal Asynchronous Receiver Transmitter)。
UART很早以前做的一个协议,做的细节有的记的不太清了,最近又用到它了,不过当时做完就做成模块了直接用的!做个总结可能以后还要再改!
发送部分:
1:数据线空闲时呈现为高或“1”状态。
2:发送起始位的逻辑位“0”
3:发送8个数据位,先发送数据的最低位,最后发送最高位(发送顺序是与IIC相反的)。每位持续的时间是固定的,由发送器本地时钟控制,每秒发送的数据位个数(不是字节数),即为“波特率”。
4:发送1个、1+1/2个或2个停止位逻辑“1”位。
接受部分( 5倍速采样为例 ):
1:检测起始位,最早检测到起始位低电平的时刻必将落在S0阴影区,每次具体的采样点会在S0阴影区随机变化。我想有两种检测的方法:1)因为空闲和结束位都为1,所以一旦到检测到下降沿,间隔两个采样周期在数据位的中间采样(因为中间采样数据最可靠),如果为0则起始位有效,否则无效返回空闲状态继续等待。2)在每个采样时钟检测输入数据是否为低电平,若检测到低电平,则开始计数,如果连续2个时钟内输入数据均为低电平,则认为起始信号有效,其中若有一次采样得到的为高电平则认为起始信号无效,返回初始状态重新等待起始信号的到来。
2: 采样数据位,一旦检测到起始位有效时 (正好在起始位数据中间) ,每隔5个采样周期(即一个数据周期)采样数据位 (即正好在数据位中间位置采样) ,连续采样8次分别把最低位到最高位存入移位寄存器。
3: 检测结束位,跟采样数据位一样采样一位结束位, 当停止位采样值为高电平时,认为同步和数据正确,装人数据寄存器,否则认为同步或传输错误,此次采样的字符作废,将其舍弃。 不管正不正确接受状态机都要回到空闲状态。
总的来讲:
起始位和停止位起着很重要的作用。显然,他们标志每个字符的开始和结束,但更重要的是他们使接收器能把他的局部时钟与每个新开始接收的字符再同步。异步通信没有可参照的时钟信号,发送器随时都可能发送数据,任何时沿的出现时间,从而正确地采样紧接着的10~11位(包括开始位、数据位和停止位)。由于串行数据帧与接收时钟是异步的,所以接收器功能实现中的关键是接收器时钟与每个接收字符的同步。一个有效的方法是接收器采用高速率时钟对串行数据进行采样,通常采样频率是位时钟频率的整数倍。理论上倍数越高接收数据各位的分辨率越高,实际中,一般最大选择16倍。
接收器应该尽可能地在靠近位周期的中心处对每位采样 如果接收器能很好地预测起始位的开始,那么他可在起始位的下降沿到来之后,等待半个位周期再采样数据位。此后,接收器每等待一个位周期采样一个数据位,直至收到最后一位为止。倘若接收时钟的频率足够接近发送时钟,使得最后位能在离该位的精确中心位置半个周期内对他采样,以上方案就能正确地工作。这意味着接收时钟相对于发送时钟在10~11个时钟周期内,其增加和减少应小于半个位的时间间隔。因此,要求收发双方2个时钟的误差容限在5%以内。接收器的时钟与发送器的时钟不是同一个(即采样时钟为数据时钟的16倍(最大)),因此,接收器采样点的间隔跟由发送器时钟所确定的位间隔时间不同,接收器一定不能让他的相对时钟速度导致采样错误。
波特率的设置:因为时每秒发送的数据位个数,上位机的发送的波特率是9600,假如采样频率以发送频率的16倍进行采样,那么采样频率为9600×16;8位数据加上起始位和结束位(暂不考虑校验)共10位数据,所以发送一个完整的数据串的频率为9600/10=960,也就是说要想把以一个完整的8位数据存到RAM/FIFO里,写时钟应该是波特率的1/10;
总的来讲,就时为了采样到最可靠的数据,接收器应该尽可能地在靠近位周期的中心处对每位采样,采样频率时数据频率的整数倍( 一般最大选择16倍 ),协议本身的难点就在于波特率发生器的设置和采样位置的处理!
 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
UART是一种串行通信协议,常用于将数据从一个设备传输到另一个设备。UART通常在嵌入式系统中使用,其中一个设备是微控制器或微处理器,另一个设备可以是传感器、执行器、显示器等。 UART协议包括以下几个方面: 1. 通信速率:UART通信速率是指每秒可以传输的数据位数。通信速率的选择取决于通信所需的数据量和通信距离,通常由波特率来表示。 2. 数据位:UART通信中每个数据字节可以由5、6、7或8个数据位组成,通常使用8位数据位。 3. 停止位:在UART通信中,每个数据字节之后有一个停止位。停止位的通常值为1。 4. 校验位:UART通信中可以使用校验位来验证数据的正确性。常用的校验方式包括奇偶校验、偶校验和无校验。 5. 数据传输顺序:UART通信可以选择高位优先或低位优先的数据传输顺序。 UART通信的基本流程如下: 1. 发送方将数据按照数据位、停止位、校验位的顺序传输到接收方。 2. 接收方接收数据,并进行数据解析和校验。 3. 接收方可以向发送方发送确认消息,表示数据已经接收。 4. 如果数据传输中发生错误,接收方可以向发送方发送错误消息,请求重新发送数据。 因为UART通信是一种点对点通信方式,因此需要使用多个UART通信通道来实现多设备之间的通信。UART通信通道的数量取决于系统中的设备数量和通信需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值