GPIO là viết tắt của General Purpose Input output là trong số những thuật ngữ thịnh hành nhất mà bạn có thể đã gặp. Lúc bạn ban đầu công việc trong một hệ thống nhúng, đấy là từ thứ nhất bạn đề xuất nghe nói đến. Nhưng các bạn có nghĩ về rằng bạn đã nuốm vững tất cả các khái niệm tương quan đến GPIO? tín hiệu trên những chân GPIO cho phép bọn họ đạt được chức năng cuối của mình và đến phép họ nói chuyện với nhân loại bên ngoài. Trong nội dung bài viết này, tôi vẫn đi sâu về các khái niệm không giống nhau liên quan mang đến GPIO. Ở cuối nội dung bài viết này, các bạn sẽ có thể vấn đáp gpio là gì, các loại GPIO rất có thể được thực hiện là gì, cách cấu hình gpio để tiết kiệm ngân sách và chi phí điện năng, tác động của tốc độ GPIO mang lại phát xạ EMI của bo mạch, khóa gpio để ngăn việc thông số kỹ thuật lại ngẫu nhiên,... Là một trong những kỹ sư phần mềm, chúng ta phải nỗ lực vững những khái niệm này bởi hầu hết quá trình của các bạn sẽ là viết mã bare metal hoặc mã driver và là một nhà cải cách và phát triển ứng dụng nhúng, bạn nên biết các khái niệm này theo thiết bị tự để hiểu các chức năng cốt lõi được cung ứng bởi GPIO API cùng nếu có gì đấy bị hỏng, bạn có thể nhanh chóng sửa chữa thay thế ở cung cấp driver.
Bạn đang xem: Một số khái niệm căn bản về gpio của vi điều khiển "push
GPIO là gì?
GPIO là một trong chân biểu đạt kỹ thuật số trên mạch tích hợp mà hành vi của nó (đầu vào hoặc đầu ra) được tinh chỉnh bởi ứng dụng ứng dụng. GPIO về cơ bạn dạng là một chân rất có thể được thông số kỹ thuật làm nguồn vào hoặc đầu ra. Nếu chúng ta cấu hình chân như 1 đầu ra, bạn có thể ghi 0 (LOW) hoặc 3,3 / 5 V (VDD) vào chân đó. Khi được cấu hình làm đầu vào, bạn cũng có thể đọc biểu đạt trên chân đó. GPIO là giao diện tiêu chuẩn chỉnh mà thông qua đó vi điều khiển có thể giao tiếp với nhân loại bên ngoài. Nó rất có thể được áp dụng để đọc những giá trị từ cảm biến analog hoặc kỹ thuật số, điều khiển đèn LED, điều khiển đồng hồ cho giao tiếp I2C,...
Bản đồ bộ nhớ lưu trữ của nước ngoài vi GPIO
Như chúng ta đã hiểu được vi điều khiển tiến bộ sử dụng kỹ thuật bản đồ bộ lưu trữ để ánh xạ toàn bộ các lắp thêm ngoại vi vào một ko gian bộ nhớ lưu trữ thống nhất. Bởi vì bộ tinh chỉnh và điều khiển STM32F446RE là bộ vi tinh chỉnh và điều khiển dựa trên ARM Cortex M4 cần không gian bộ nhớ cho những thiết bị nước ngoài vi được ARM nói riêng như biểu hiện trong hình:

Địa chỉ bộ nhớ lưu trữ trong khoảng chừng từ 0x40000000 cho 0x600000000 rất có thể được nhà cung cấp vi tinh chỉnh sử dụng để ánh xạ những thiết bị nước ngoài vi khác biệt của họ. Vùng này được tạo thành nhiều vùng phụ, mỗi vùng được ánh xạ cho tới một máy ngoại vi cố kỉnh thể, như biểu hiện trong hình mặt dưới. Từ khía cạnh lập trình viên, bọn họ cần search ra add mà một vật dụng ngoại vi rõ ràng được ánh xạ trong dải địa chỉ này. Datasheet của vi tinh chỉnh sẽ cung cấp add một sản phẩm công nghệ ngoại vi rõ ràng được ánh xạ. Vào trường hợp của chúng ta, như bạn cũng có thể thấy vào hình bên dưới, đồ vật ngoại vi GPIO được ánh xạ trong dải địa chỉ 0x40020000 mang lại 0x40021FFF. Đây cũng chính là vùng băng tần bit (chúng ta sẽ tò mò về điều đó sau).

Như chúng ta thấy, GPIO ngoại vi được chia thành GPIO A, GPIO B, GPIO C, GPIO D, GPIO E, GPIO F, GPIO G, GPIO H cùng mỗi cổng chứa tối đa 16 chân. Nước ngoài vi GPIOA được ánh xạ từ showroom 0x40020000 mang đến 0x400203FF và nó quản lý tất cả các chân liên kết với PORT-A.
Mẫu vi giải pháp xử lý ARM Cortex M-4 có bus dữ liệu rộng 32 bit, bus add và tập thanh ghi rộng 32 bit. Bên trên thực tế, từng từ có kích thước 32-bit. Biết được bus dữ liệu, bus add và chiều rộng thanh ghi là rất quan trọng đặc biệt vì nó sẽ giúp hiểu số đông thứ ở cấp độ rất thấp (cơ bản) có nghĩa là cấp độ trình điều khiển. Vì chúng ta biết rằng size từ là 4 byte, bởi đó chúng ta cũng có thể nói rằng những thanh ghi của nước ngoài vi GPIO lâu năm 4 byte.
Cho đến bây giờ, họ đã kiếm tìm ra địa chỉ cửa hàng cơ sở của các thiết bị nước ngoài vi GPIO. Đó là vấn đề đầu tiên các bạn sẽ làm với tư cách là một trong lập trình viên bất cứ khi nào bạn định lập trình ngẫu nhiên thiết bị nước ngoài vi làm sao là tìm showroom cơ sở của trang bị ngoại vi. Bây giờ, họ cần biết add thanh ghi chính xác để lập trình các thanh ghi. Trước khi bắt đầu lập trình những thanh ghi, chúng ta phải phát âm mục đích của các thanh ghi này. Hãy đi sâu vào tập vừa lòng thanh ghi GPIO!
Thanh ghi GPIO
Tất cả những GPIO gồm trong vi điều khiển và tinh chỉnh được đội lại thành Cổng X trong các số ấy X là A, B, C, D ...
Mỗi cổng trong STM32F446RE bao gồm 16 chân. Mỗi chân có tương đối nhiều thanh ghi không giống nhau được links với nó, bằng cách thay đổi nội dung của những thanh ghi, bạn cũng có thể kiểm soát hành động của một chân cố gắng thể.
Trong STM32F446RE, hành vi của từng chân hoàn toàn có thể được kiểm soát bằng phương pháp sử dụng:
Thanh ghi cơ chế GPIO
Thanh ghi loại cổng đầu ra GPIO
Thanh ghi tốc độ GPIO
Thanh ghi dàn ra / kéo xuống GPIO
Thanh ghi tài liệu đầu vào GPIO
Thanh ghi tài liệu đầu ra GPIO
Thanh ghi phối / reset bit GPIO
Thanh ghi khóa cấu hình GPIO
Thanh ghi tác dụng thay rứa GPIO
Chúng ta sẽ chú ý các chức năng được ship hàng bởi từng thanh ghi này trong nội dung bài viết này. Hiểu tác dụng của các thanh ghi này là rất quan trọng đặc biệt vì nó sẽ giúp đỡ bạn điều hành và kiểm soát chân theo yêu cầu của bạn. Ngoài ra, nếu bạn muốn viết driver GPIO của riêng mình, bạn sẽ chủ yếu hèn viết các hàm chủ đạo để lập trình các thanh ghi này và cung ứng API trừu tượng cho các ứng dụng người dùng sử dụng driver của bạn.
Chi máu về thanh ghi GPIO
Thanh ghi chế độ GPIO - Thanh ghi này được sử dụng để chọn chính sách của chân cắm. Bao gồm bốn cơ chế có thể được thiết kế vào thanh ghi này: chính sách đầu vào, chính sách đầu ra mục tiêu chung, chính sách chức năng sửa chữa thay thế và chế độ analog. Khi ứng dụng muốn đọc ngẫu nhiên dữ liệu nào từ bên ngoài như cảm biến, nó đã định thông số kỹ thuật chân cắn làm đầu vào. Từng chân tất cả một cỗ đệm đầu vào khớp ứng mà phần mềm có thể đọc được lúc chân đó đang vận động ở chế độ INPUT. Chính sách Đầu ra mục đích Chung được áp dụng khi họ muốn ghi cực hiếm THẤP hoặc CAO vào chân. Ví dụ: nếu chúng ta kết nối một led với một chân và chúng ta muốn để đèn sáng LED, phần mềm sẽ thông số kỹ thuật chân đó là đầu ra output và ghi HIGH (VDD) vào chân. Mỗi chân tất cả một bộ đệm cổng đầu ra tương ứng rất có thể được ghi bởi vì phần mềm, vào trường hòa hợp này, họ đang ghi 1 vào cỗ đệm đầu ra. Chế độ chức năng sửa chữa thay thế được sử dụng khi chúng ta muốn gán một chân rõ ràng cho ngẫu nhiên thiết bị nước ngoài vi như thế nào khác. Hãy chia nhỏ tuổi ra một cách dễ dàng và đơn giản dễ gọi với một ví dụ đơn giản. Ví dụ: Nếu bạn có nhu cầu sử dụng giao tiếp I2C, bạn sẽ cần nhì chân là SDA cùng SCL. Chúng ta cần chọn một số chân cụ thể do nhà cung ứng vi tinh chỉnh cung cấp, hoàn toàn có thể được áp dụng như cái I2C SDA với SCL. Chúng ta có thể lấy thông tin này từ bỏ datasheet thiết bị. Vào bảng bên dưới đây, chúng ta có thể thấy rằng đối với SCL ngoại vi I2C1, bạn có thể sử dụng Cổng B Chân 6 trong chức năng Thay nuốm (AF) 4.
Xem thêm: Tìm Bài Hát " Em Bảo Anh Đi Đi Sao Anh Không Đứng Lại ” Qua Đời

Từ sơ vật dụng trên, bạn cũng có thể thấy rằng nhà chế tạo thiết bị đang ánh xạ một vài chân ví dụ nhất định sẽ được sử dụng bởi những thiết bị ngoại vi không giống nhau. Bởi vì đó, trong lấy ví dụ như của chúng ta, Cổng B Chân 6 buộc phải được cấu hình ở chính sách chức năng sửa chữa thay thế để nó hoàn toàn có thể được thực hiện bởi đồ vật ngoại vi I2C1. Nếu bạn có nhu cầu gán các chân cho thiết bị nước ngoài vi ADC (Analog to lớn Digital Converter) hoặc DAC (Digital lớn Analog convertor), bạn nên định thông số kỹ thuật chế độ là chính sách Analog.