🌱 STM32 - 4. Tổng quan ngoại vi GPIO
GPIO - General Purpose Input/Output là ngoại vi trong vi điều khiển, với chức năng vào ra chung. Input như nút bấm, cảm biến, ngắt, ... Output như on/off led, thiết bị, PWM, ... Trong bài viết này chúng ta sẽ cùng tìm hiểu về các đặc điểm, các chức năng và chế độ hoạt động của ngoại vi GPIO trong vi điều khiển STM32.
Hai chức năng cơ bản nhất của GPIO đó là Input (đầu vào) và Output (đầu ra).
🧐🧐 Input
Có nhiều mode input khác nhau trong vi điều khiển, có thể kể đến: Floating (thả nổi), Input_pullup, Input_pulldown.
👀 Floating - thả nổi
Là kiểu đầu vào mà ở trạng thái mặc định nó có trở kháng cao (không cho dòng điện đi ra), giá trị pin đọc được phụ thuộc giá trị đầu vào tác động từ bên ngoài.
Ví dụ: trong hình 1, khi không kích hoạt số 1 và 2 (pullup/pulldown) thì Input ở chế độ floating.
Mode này tiêu thụ năng lượng điện của mạch rất nhỏ, chúng cực kì hữu ích cho việc đọc một cảm biến (Analog Input).
👀 Input_PULL-UP & Input_PULL-DOWN
Có thể thấy chế độ Floating khá bất tiện khi đọc một nút bấm chẳng hạn. Ta cần một mode mà có trạng thái mặc định là '1' hoặc '0' logic, để việc thiết kế mạch điện tử bên ngoài ít phức tạp hơn!
Mode Input_Pullup dùng điện trở kéo lên nguồn (số 1 trong hình) nên mặc định nó đọc về mức 1. Khi đọc nút bấm, ta chỉ cần nối nút bấm với mức '0' (GND).
Tương tự với Input_Pulldown dùng điện trở kéo xuống đất (số 2 trong hình) nên mặc định là mức '0'.
Ngoài duy trì mức logic mặc định, 2 mode này còn có chức năng bảo vệ vi điều khiển.
🧐🧐 Output
Có 2 mode output điển hình: Push-pull & Open drain.
👀 Open drain
Hãy nhìn hình 2, ở chế độ Open drain, P-MOS luôn ngưng dẫn.
- Đặt vào một logic '0' thì N-MOS sẽ dẫn, đầu ra của pin = '0'.
- Đặt vào một logic '1' thì N-MOS sẽ ngưng dẫn, đầu ra của pin sẽ ở mức trở kháng cao Hi-Z.
👀 Push-pull
Hình 2, ở chế độ Push-pull, cả P-MOS & N-MOS đều được dùng.
- Đặt vào một logic '0' thì N-MOS dẫn và P-MOS ngưng dẫn, đầu ra của pin = '0'.
- Đặt vào một logic '1' thì N-MOS ngưng dẫn và P-MOS dẫn, đầu ra của pin = '1'.
Push-pull thường được sử dụng hơn với on/off, PWM, ...
Open-drain được sử dụng trong trường hợp muốn điều khiển nhiều thiết bị tiêu thụ dòng với chỉ 1 vi điều khiển, kèm thiết kế trở treo bên ngoài.
Cũng vì vậy, Open-drain hay xuất hiện trong các ứng dụng yêu cầu mạch drives, tiêu biểu nhất là bus I2C.
Bài viết rất hay, em cảm ơn ạ
Trả lờiXóaCảm ơn bạn đã ủng hộ :D
Xóa