標題: UART協(xié)議分析 [打印本頁]

作者: 還有誰?    時間: 2020-3-22 11:17
標題: UART協(xié)議分析


1.起始位
  當沒有數據發(fā)送時,數據線處于邏輯“1”狀態(tài);先發(fā)出一個邏輯“0”信號,表示開始傳輸字符。

2.數據位
  緊接著起始位之后。資料位的個數可以是4、5、6、7、8等,構成一個字符。通常采用ASCII碼。從最低位開始傳送,靠時鐘定位。

3.奇偶校驗位
  資料為加上這一位后,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗),以此來校驗資料傳送的正確性。

4.停止位
  它是一個字符數據的結束標志?梢允1位、1.5位、2位的高電平。 由于數據是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很

可能在通信中兩臺設備間出現了小小的不同步。因此停止位不僅僅是表示傳輸的結束,并且提供計算機校正時鐘同步的機會。適用于停止位的

位數越多,不同時鐘同步的容忍程度越大,但是數據傳輸率同時也越慢。

5.空閑位或起始位
  處于邏輯“1”狀態(tài),表示當前線路上沒有資料傳送,進入空閑狀態(tài)。

  處于邏輯“0”狀態(tài),表示開始傳送下一數據段。

6.波特率
  表示每秒鐘傳送的碼元符號的個數,是衡量數據傳送速率的指標,它用單位時間內載波調制狀態(tài)改變的次數來表示。

  常用的波特率有: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;        //收發(fā)模式

       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.torrancerestoration.com/bbs/) Powered by Discuz! X3.1