khái niệm căn bản về GPIO của Vi điều khiển “push-pull” và “open-drain”

GPIO là gì?

Vi điều khiển trong các board mạch tương tác với thế giới bên ngoài thông qua các chân GPIO (General Purpose Input Output Pins). Các chân GPIO được nối với các thiết bị cảm biến để theo dõi, đo đạc môi trường bên ngoài hoặc thiết bị điều khiển đóng ngắt như bật tắt đèn, loa, động cơ…Như vậy, khi nói đến các nền tảng phần cứng, bên cạnh sức mạnh của vi điều khiển (tốc độ và bộ nhớ) thì số chân GPIO là hết sức quan trọng vì nó đem lại khả năng mở rộng của thiết bị.
Nếu những dòng vi điều khiển 8bit, chỉ có 8 chân IO trên 1 port thì ở các vi điều khiển 32bit, có đến 16 chân IO trên 1 port. Cụ thể đối với chip STM32F103C8Tx gồm có 3 Port chính đó là GPIOA, GPIOB, GPIOC. Trong đó, GPIOA, GPIOB trên kit thì có đủ 16 chân GPIO, GPIOC 3 chân và GPIOD có 2 chân. 
Mỗi chân có thể được lập trình riêng là một đầu vào kỹ thuật số (digital input) hoặc đầu ra kỹ thuật số (digital output). Ngoài ra, một số port có thể có chức năng thay thế (alternative function – AF) như đầu vào tương tự (ADC), ngắt ngoài (EXTI), đầu vào / đầu ra cho ngoại vi trên chip. Chỉ có một chức năng thay thế có thể được ánh xạ tới một chân tại một thời điểm, việc ánh xạ chức năng thay thế được điều khiển bởi byte tùy chọn. Hãy tham khảo các bảng dữ liệu một mô tả byte tùy chọn.

Chân Analog/Digital/Power

Digital pin: Digital pin là các chân có trạng thái 0 hoặc 1, dùng để theo dõi trạng thái đầu vào dạng bật tắt như là nút nhấn (ví dụ khi nút được nhấn thì pin có giá trị 1, còn khi không nhấn là 0) hay điều khiển thiết bị khác (như điều khiển bật tắt đèn led).
Analog pin: Là các chân có giá trị nằm trong một dải rộng thay vì chỉ có 0 với 1 như digital pin, dùng để thu thập tín hiệu từ các cảm biến như độ sáng ngoài trời hay độ ẩm của đất. Giá trị của các cảm biến này truyền về analog pin thông qua bộ chuyển đổi Analog-Digital-Converter (ADC) là một số trong dải số nhất định (ví dụ 0 đến 1023 đối với ADC 10 bit hoặc 0-4095 với ADC 12 bit) thể hiện trạng thái của môi trường đang được theo dõi (ví dụ 0 là đất khô và 1023 là đất được tưới đầy nước).
Power pin: Ngoài các chân digital và analog, các chân nguồn power pin dùng để cấp nguồn cho thiết bị. Power pin gồm ít nhất 2 chân:
+ Cực dương (VCC): Tùy thuộc vào nguốn cấp sẽ có điện áp khác nhau, phổ biến nhất là 5V và 3.3V.
+ Cực âm hay còn gọi là mass hay GND (ground).

Khi GPIO được cấu hình là đầu vào (Input):

Pull-up: bạn sẽ sử dụng trở kéo trong, mặc định ở trạng thái kéo cao. Đây là hình thức được sử dụng phổ biến.

Hình vẽ mô tả chân đầu vào Pull up

Floating: một số trường hợp có thể gọi là High Impedance Input (đầu vào trở kháng cao) chân bị thả nổi mức tín hiệu, mức tín hiệu trên chân vi điều khiển mặc định ở trạng thái không xác định. Mức tín hiệu phụ thuộc vào nguồn ở bên ngoài. Khi ở trạng thái Floating, đầu vào giống như một tri-state buffer (Schmitt trigger có thể ở trạng thái bật hoặc tắt). Cấu hình dạng này hiếm khi được sử dụng, yêu cầu chắc chắn phải có mạch lái bên ngoài.

GPIO C ở trạng thái Floating (không rõ trạng thái 0 hay 1)

Khi GPIO được cấu hình là đầu ra (Output):

Push-pull: đầu ra mức logic luôn nằm trong hai lựa chọn 0 hoặc 1.

Chân đầu ra Push pull

Open-drain: tương tự floating input, đầu ra mức tín hiệu phụ thuộc vào nguồn ở bên ngoài. Cấu trúc của các chân I/O đều có các đệm MOSFET. Khi cấu hình mở cực máng (Drain), đầu ra biến thành một đơn vị tiêu tán dòng (current sink) gây lãng phí năng lượng. Vậy nên, cấu hình Open-drain cũng yêu cầu đảm bảo kết nối với bên ngoài.

Chân đầu ra Open Drain
So sánh đầu ra Push pull và Open Drain

Floating input được dùng trong trường hợp phụ thuộc hoàn toàn vào nguồn tác nhân bên ngoài, tiêu biểu là ADC. Open-drain ouput đượ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 ouput hay xuất hiện trong các ứng dụng yêu cầu mạch lái, tiêu biểu nhất là bus I2C (cần nối trở kéo lên nguồn từ 2.2 K Ohm tới 10K Ohm). 

Các chế độ cho GPIO của STM32

  • Input floating : cấu hình chân I/O là ngõ vào và để nổi.
  • Input pull-up : cấu hình chân I/O là ngõ vào, có trở kéo lên nguồn.
  • Input-pull-down: cấu hình chân I/O là ngõ vào, có trở kéo xuống GND.
  • Analog : cấu hình chân I/O là Analog, dùng cho các mode có sử dụng ADC hoặc DAC.
  • Output open-drain: cấu hình chân I/O là ngõ ra, khi output control = 0 thì N-MOS sẽ dẫn, chân I/O sẽ nối VSS, còn khi output control = 1 thì P-MOS và N-MOS đều không dẫn, chân I/O được để nổi.
  • Output push-pull: cấu hình chân I/O là ngõ ra, khi output control = 0 thì N-MOS sẽ dẫn, chân I/O sẽ nối VSS, còn khi output control = 1 thì P-MOS dẫn, chân I/O được nối VDD.
Các chế độ cho GPIO của STM32
  • Alternate function push-pull: sử dụng chân I/O vừa là ngõ ra và vừa là ngõ vào, tuy nhiên sẽ không có trở kéo lên và kéo xuống ở input, chức năng output giống Output push-pull. Ngoài ra nó còn để sử dụng cho chức năng remap.
  • Alternate function push-pull: sử dụng chân I/O vừa là ngõ ra và vừa là ngõ vào, tuy nhiên sẽ không có trở kéo lên và kéo xuống ở input, chức năng output giống Output open-drain. Ngoài ra nó còn để sử dụng cho chức năng remap.

Nguồn: https://www.dientuhello.com/

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Chat Ngay