🌱 STM32 - 15. UART Example - Register Level
Các Bài viết trước về USART:
- STM 11. USART in STM32 Overview
- STM 12. STM32 USART Registers
- STM 13. USART: Cấu hình Baudrate
- STM 14. USART Workflow
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:
- STM32CubeIDE ⇒ Xem hướng dẫn sử dụng.
- Hercules.
👉 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:
- Enable Clock tương ứng với ngoại vi USART sử dụng.
- Setup Pin tương ứng với chức năng UART.
- Enable Transmit/Receive bằng bit TX/RX trên thanh ghi USART_CR1.
- Config Word Length (8bit or 9bit) bằng bit M thanh ghi USART_CR1.
- Config Parity Bit sử dụng bit PCE - Parity Control Bit và PS - Parity Selection thanh ghi USART_CR1.
- Config Stop Bits sử dụng trường STOP thanh ghi USART_CR2.
- Option: Config Hardware Flow Control sử dụng thanh ghi USART_CR3.
- Cấu hình Baudrate sử dụng thanh ghi USART_BRR.
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:
- Đợi thanh ghi truyền dữ liệu trống - empty bằng cờ TXE - Transmission Data Register Empty, thanh ghi USART_SR.
- Đặt Byte Data cần truyền vào thanh ghi USART_DR.
- Đợ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:
- Đợ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.
- Đọ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é 💗
>>>= 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 😊