标题: UART协议分析 [打印本页]

作者: 还有谁?    时间: 2020-3-22 11:17
标题: UART协议分析


1.起始位
  当没有数据发送时,数据线处于逻辑“1”状态;先发出一个逻辑“0”信号,表示开始传输字符。

2.数据位
  紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。

3.奇偶校验位
  资料为加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。

4.停止位
  它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很

可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的

位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

5.空闲位或起始位
  处于逻辑“1”状态,表示当前线路上没有资料传送,进入空闲状态。

  处于逻辑“0”状态,表示开始传送下一数据段。

6.波特率
  表示每秒钟传送的码元符号的个数,是衡量数据传送速率的指标,它用单位时间内载波调制状态改变的次数来表示。

  常用的波特率有:9600、115200……

  时间间隔计算:1秒除以波特率得出的时间,例如,波特率为9600的时间间隔为1s / 9600(波特率) = 104us。


函数如下:
void uart_init(u32 bound)
        {

        USART_InitStructure.USART_BaudRate = bound;//串口波特率
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
        USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
        USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //收发模式

       USART_Init(USART1, &USART_InitStructure); //初始化串口1
       USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断
       USART_Cmd(USART1, ENABLE);                    //使能串口1
}



作者: sunnywood    时间: 2020-3-23 14:25
赞一个,谢谢科普
作者: hujzh888    时间: 2020-3-23 15:29
解释相当到位
作者: yoxi    时间: 2020-3-23 15:54
间单明了,真心不错,顶起来!
作者: shuisheng    时间: 2020-3-24 07:51

赞一个,谢谢分享!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1