首頁>Club>
9
回覆列表
  • 1 # TopSemic

    首先得了解USART串列埠的具體通訊機理:

    USART使用非同步模式工作,不需要時鐘訊號,其一般格式為:起始位+資料位+校驗位+停止位。其中起始位1位,資料位5~8位,校驗位0或1位,停止位1、1.5或2位。不過最常用的格式是1位起始位、8位資料位、沒有奇偶校驗、1位停止位,簡記為8/N/1

    8/N/1格式的時序圖如下:

    空閒時資料線上規定為邏輯1。

    開始傳輸資料時先發送起始位,規定為邏輯0,接收端會檢測這個下降沿,以便之後開始取樣接收資料。

    起始位之後是資料位,規定先發送最低位,即LSB First。因為UART沒有時鐘訊號,故使用波特率來確定每一位的長度,不過為保證檢測的準確性,實際取樣頻率會高於波特率,一般每一位會進行若干次取樣,取中間的取樣值作為這一位的結果。

    奇偶校驗位一般不使用。

    停止位一般使用1位,規定為邏輯1,除了表示傳輸結束外,停止位還可以起到時鐘同步的作用。

    需要注意的是,這裡的邏輯0並不一定是0V,這與使用的電平標準有關。對於TTL電平而言,邏輯0是0V,邏輯1是高電平(一般為3.3V或5V);對於RS-232電平而言,邏輯0是3V~15V,邏輯1是-3~-15V。

    除了TX、RX、GND訊號外,UART中還會有諸如RTS、CTS等流控訊號,因為用得不是很多,此處就不總結了。

    以傳送0x23(無奇偶校驗)為例來說明,傳輸時序如下:

    注意是LSB First,也就是最低位先傳輸哦。

    0x23,二進位制表示為00100011,傳輸順序為1->1->0->0->0->1->0->0

    對應上面示波器的圖:

    剛開始空閒是1,然後起始位0,之後1->1->0->0->0->1->0->0,最後1.

    至於實現,透過定時器+GPIO就可以實現。通常MCU本身會自帶USART介面,只需要透過軟體程式碼即可操作。

  • 中秋節和大豐收的關聯?
  • 如果能回到過去,你還會跟他分手嗎?