Title Image

Blog Logo

🌱 STM32 - 14. UART Workflow

🌱 STM32 - 14. UART Workflow

    Post này sẽ tập trung vào quá trình khởi tạo, truyền, nhận qua ngoại vi USART của vi điều khiển STM32. Dù bạn lập trình thanh ghi hay thư viện thì cũng đều tuân thủ theo Workflow cơ bản này. (Mình sẽ chủ yếu nói đến quá trình truyền/nhận theo kiểu Polling). 

    Để thực hành với USART, các bạn cần nắm được các kiến thức cơ bản và các thanh ghi của nó:

    👉 Khởi tạo USART

    Việc khởi tạo USART, chúng ta sẽ khởi tạo 2 đặc điểm quan trọng nhất của USART là khung truyền (bao gồm độ dài khung truyền, số bit Stop) và tốc độ Baudrate.   

  1. Cấu hình bit M trong thanh ghi USART_CR1 để xác định độ dài khung truyền là 8 bits hay 9 bits (Word Length).
  2. Cấu hình số bit Stop bằng bit STOP trong thanh ghi USART_CR2.
  3. Tính toán Baudrate và cấu hình bằng thanh ghi USART_BRR.
  4. Cho phép quá trình truyền dữ liệu bằng bit TE trên thanh ghi USART_CR1.
  5. Cho phép quá trình nhận dữ liệu bằng bit RE trên thanh ghi USART_CR1.
  6. Cho phép ngoại vi USART bằng bit UE trên thanh ghi USART_CR1.
    Các bước 4, 5 có thể chọn 1 trong 2 nếu USART của chúng ta chỉ cho phép truyền hoặc nhận.  

    👉 Cấu hình truyền USART - TX

  1. Kiểm tra xem thanh ghi data có trống hay không bằng cờ TXE, nếu cờ TXE = 1 thì có thể ghi dữ liệu vào thanh ghi data để gửi đi. 
  2. Ghi dữ liệu vào thanh ghi data USART_DR.
  3. Đợi đến khi data truyền xong bằng cờ TC (TC = 1).

    👉 Cấu hình nhận USART - RX

  1. Đợi đến khi nhận dữ liệu xong bằng cờ RXNE, khi nhận xong thì cờ RXNE = 1.
  2. Đọc dữ liệu từ thanh ghi data USART_DR.


    Ok, bài này đến đây thôi, bài sau mình sẽ lấy một ví dụ về các hàm truyền nhận để các bạn hiểu rõ hơn về USART.

>>>= 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 😊

                                        

Đăng nhận xét

2 Nhận xét

  1. Anh lm thêm về SPI, I2C vs CAN đi anh, cảm ơn anh nhiều ạ.

    Trả lờiXóa
    Trả lời
    1. Ok em có thời gian anh sẽ làm thêm về những giao thức khác :D

      Xóa