Title Image

Blog Logo

STM 32. UART Example - Register Level

🌱 STM 32. UART Example - Register Level

    Các Bài viết trước về USART:

    Bài viết này mình sẽ cùng các bạn thực hành một ví dụ sử dụng  UART sử dụng Vi điều khiển STM32, access trực tiếp thanh ghi. 

    👉 Phần cứng sử dụng:

    • STM32F401RE - NUCLEO Board.
    • CP2102 USB-to-UART.

    👉 Phần mềm sử dụng

    👉 UART Workflow

🔎 Khởi tạo UART

    Để làm việc với giao thức UART, chúng ta cần khởi tạo ngoại vi bằng cách cấu hình một số thông số: Baudrate, Stop Bits, Parity Bits, ...

    Chúng ta có thể config theo flow sau:

  1. Enable Clock tương ứng với ngoại vi USART sử dụng.
  2. Setup Pin tương ứng với chức năng UART.
  3. Enable Transmit/Receive bằng bit TX/RX trên thanh ghi USART_CR1.
  4. Config Word Length (8bit or 9bit) bằng bit M thanh ghi USART_CR1.
  5. Config Parity Bit sử dụng bit PCE - Parity Control Bit và PS - Parity Selection thanh ghi USART_CR1.
  6. Config Stop Bits sử dụng trường STOP thanh ghi USART_CR2.
  7. Option: Config Hardware Flow Control sử dụng thanh ghi USART_CR3.
  8. Cấu hình Baudrate sử dụng thanh ghi USART_BRR.
    ??? Tính toán Baudrate

    Bài viết: STM 13. USART: Cấu hình Baudrate

    Ví dụ: Tính toán Baudrate = 9600 với F_CLK = 8MHz.

🔎 Truyền dữ liệu UART

    Truyền từng frame dữ liệu (7/8/9 bits data) bằng flow sau:

  1. Đợi thanh ghi truyền dữ liệu trống - empty bằng cờ TXE - Transmission Data Register Empty, thanh ghi USART_SR.
  2. Đặt Byte Data cần truyền vào thanh ghi USART_DR.
  3. Đợi việc truyền hoàn tất bằng cờ TC - Transmission Complete thanh ghi USART_SR.

🔎 Nhận dữ liệu UART

    Nhận dữ liệu từ UART theo flow sau:

  1. Đợi thanh ghi nhận dữ liệu chứa data - not empty bằng cờ RXNE - Receive Data Register Not Empty, thanh ghi USART_SR.
  2. Đọc dữ liệu nhận được từ thanh ghi USART_DR.

    👉 Example: STM32 giao tiếp PC USB-to-UART

    Mình dùng con CP2102 USB-to-UART để test giao thức UART của STM32, giao tiếp truyền nhận dữ liệu với máy tính (Cài phần mềm Hercules).


    Nối dây TX của CP2102 với RX của STM32, RX của CP2102 với TX của STM32.

    👉 Mình để lại Video sau để các bạn tham khảo nhé!

    Video 1: Hàm UART_Init()

    Video 2: Hàm UART_SendData() và UART_ReceiveData()

Các bạn thấy Video hữu ích có thể cho mình xin 1 Like + 1 Subcribe nhé 💗

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

Xem Bài FLASH               Xem Bài UART INT

Đăng nhận xét

0 Nhận xét