8051 UART

Posted by: 邱小新 at 下午3:04 in
點圖看原始圖

baudrate 推導過程,以 timer1 為 baudrate 產生器

  1. baudrate 的單位為 bps 即每秒傳送多少 bits,反過來說傳送一個 bit 要花掉 1/baudrate 時間。
  2. 根據上圖來看,每次 timer 溢位一次,總共要經下列關卡才會接收一個 bit。
    1. 假如 SMOD=0 要經過一個二的除法器。
    2. 再進入 clock 前要先經過一個 16 的除法器。
    3. 當 SMOD=0 需 16 * 2 的計時器溢位才會接收一個 bit。
    4. 當 SMOD=1 需 16 的計時器溢位才會接收一個 bit。
    5. 推導出,需 16 * 2 / 2^SMOD 的計時器溢位才會接收一個 bit。
  3. 以 8-bit auto reload mode 來說,每一次溢位時間為 (256-TH1) * 12 / Fosc。
  4. 每接受一個 bit 要花掉時間為 (16 * 2 / 2^SMOD) * ((256-TH1) * 12 / Fosc)。
  5. 1/baudrate = (16 * 2 / 2^SMOD) * ((256-TH1) * 12 / Fosc)。
  6. 1/baudrate = (32 / 2^SMOD) * ((256-TH1) * 12 / Fosc)。
  7. baudrate = (2^SMOD * Fosc) / (384 * (256-TH1))
  8. 以 40MHz 為例,baudrate 最大值為 208333.33,最小值為 406.90。
  9. Th1 = 256 - (2^SMOD * Fosc / baudrate / 384)
  10. 以 11.0592MHz 為例,baudrate=19200 及 SMOD=1 時,TH1 = 256 - (2*11059200/19200/384) = 256-3 = 253。
  11. 以 11.0592MHz 為例,baudrate=9600 及 SMOD=0 時,TH1 = 256 - (11059200/9600/384) = 256-3 = 253。

0 意見

張貼留言