🌱 STM32 - 11. Tổng quan ngoại vi UART

🌱 STM32 - 11. Tổng quan ngoại vi UART

    USART - Universal Synchronous/Asynchronous Receiver Transmitter, tức là truyền thông nối tiếp đồng bộ/bất đồng bộ, đây là một ngoại vi quan trọng và cơ bản nhất trong các vi điều khiển. Chuẩn truyền thông UART và UART trong 8051 đã được giới thiệu trong bài viết về 8051 UART. Khác với UART chỉ hoạt động được ở chế độ bất đồng bộ thì USART có thể hoạt động ở cả 2 chế độ: đồng bộ và bất đồng bộ.

    Các đặc điểm chính của UART đã được nêu ở post trên, vậy ở post này chúng ta sẽ cùng tìm hiểu về các đặc điểm của ngoại vi USART trong vi điều khiển STM32. Các tính năng như khung truyền UART, Baudrate các bạn xem ở bài trên. 

    💀 Lưu ý, mỗi ngoại vi ngoài những tính năng cơ bản, thì còn rất nhiều thứ để tìm hiểu về nó. Đặc biệt với những dòng vi điều khiển có hiệu năng lớn (thường được các hệ thống lớn sử dụng), các ngoại vi này càng phức tạp và phân hóa hơn. Việc hiểu được chuẩn giao thức là đặc điểm cơ bản nhất mà chúng ta có thể tìm thấy ở mọi dòng vi điều khiển.

    👉 Đặc điểm ngoại vi USART trong STM32

    Ngoài một số đặc điểm chính của UART, ngoại vi USART trong vi điều khiển STM32 có một số đặc điểm chính như sau: 

  • Hỗ trợ đến 6 bộ ngoại vi USART (USART1 và USART6 trên bus APB2, 4 bộ còn lại từ USART2 đến USART5 trên bus APB1).
  • Các cờ truyền/nhận, thanh ghi truyền/nhận riêng biệt.
  • USART có thể hỗ trợ truyền cả chế độ đồng bộ và chế độ bất đồng bộ (Ở chế độ đồng bộ, sẽ có thêm một đường clock độc lập để đồng bộ dữ liệu, các bit start/stop sẽ không được sử dụng).
  • Hỗ trợ thêm giải mã cho bộ mã hóa IrDA SIR cho giao tiếp hồng ngoại.
  • Hỗ trợ giao tiếp SmartCard.
  • Hỗ trợ DMA để truyền nhận dữ liệu thông qua SRAM.
  • So với 8051, ở STM32, USART có thêm các cờ phát hiện lỗi. Tổng cộng có 4 cờ: Overrun Flag (Việc truyền nhận diễn ra quá nhanh), Noise Detection (phát hiện nhiễu), Frame Error (Lỗi khung truyền sai), Parity Error (lỗi chẵn lẻ của data).

    👉 Phần cứng của USART


    Trong vi điều khiển STM32, ngoại vi USART thực chất là một phần cứng, bao gồm các thành phần chính sau:
  • Một bộ Baudrate Generator để tạo tốc độ Baud.

    UART

    Bộ tạo xung clock trong STM32 phức tạp hơn khá nhiều những dòng vi điều khiển 8 bit, nó chia làm 2 phần là DIV_Mantissa DIV_Fraction. Cùng với đó là bộ chia USARTDIV, và tham số OVER8, việc tính toán Baudrate sẽ được giới thiệu ở bài sau.
  • Thanh ghi dịch khi truyền nhận (TX/RX Shift Register) và thanh ghi dữ liệu (data register).
      
    UART

    Các thanh ghi dịch sinh ra với mục địch chuyển đổi dữ liệu.
    💬 Khi truyền đi, nó sẽ chuyển dữ liệu song song (từ bus dữ liệu đặt lên thanh ghi data) thành tín hiệu nối tiếp trên đầu ra chân TX.
    💬 Ngược lại, khi nhận dữ liệu, nó sẽ chuyển tín hiệu nối tiếp từ chân RX thành tín hiệu song song để đặt vào thanh ghi data.
  • Khối điều khiển việc truyền nhận (Transmit/Receive control blocks)
     
    UART

    Các khối này sẽ tương tác trực tiếp với những thanh ghi/ các cờ truyền nhận để điều khiển việc đọc ghi dữ liệu. Để biết các bit cụ thể trên các thanh ghi làm gì, chúng ta cũng có thể xem sơ đồ khối này. 
  • First In First Out (FIFO) Memory
  • Các thành phần khác:

    UART

    Hardware Flow Controller, tương tác trực tiếp với 2 khối điều khiển việc truyền nhận dữ liệu, và 2 chân bên ngoài (RTS/CTS), 2 chân này được nói bên dưới. 

     👉 Sơ đồ chân

    Về cơ bản thì USART trong STM32 cũng sử dụng 2 chân TX và RX giống như 8051. Với chân TX để truyền dữ liệu, và chân RX để nhận dữ liệu. 
    Cơ chế truyền nhận là dựa vào phần mềm, khi ta cho phép truyền nhận bằng các bit trên các thanh ghi điều khiển.

UART

    Ngoài ra STM32 cung cấp cho chúng ta thêm 2 chân RTS và CTS được kết nối với khối Hardware Flow Control như đã nói ở trên. Khối này có vài trò điều khiển truyền nhận bằng phần cứng, thay vì sử dụng các bit của thanh ghi.

  • CTS - Clear to Send: Chân này dùng để kích hoạt việc truyền dữ liệu, bằng cách kéo chân này xuống mức 0, ngoại vi USART sẽ truyền dữ liệu trong bộ đệm.
  •  RTS - Request to Send: Có chân CTS rồi nên RTS sinh ra để cho đủ một cặp, chân này do bên nhận phát ra để báo là mình sẵn sàng nhận dữ liệu.
    Vì vậy nếu sử dụng Hardware Flow Control, chúng ta có thể nối chéo 2 chân CTS và RTS giống như TX với RX. Khi một bên phát tín hiệu mức thấp trên chân RTS để sẵn sàng nhận dữ liệu, chân CTS bên kia sẽ bị kéo xuống mức thấp, và bên đó sẽ gửi dữ liệu đi qua chân TX.

    Đó là những đặc điểm thêm về USART trong STM32, những đặc điểm cơ bản như Baudrate, Frame truyền dữ liệu, các bạn vui lòng đọc bài 8051 UART nha 😊

>>>= Follow ngay =<<<

Để nhận được những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

              

Nguyễn Văn Nghĩa

Mình là một người thích học hỏi và chia sẻ các kiến thức về Nhúng IOT.

Đăng nhận xét

Mới hơn Cũ hơn