GPIO là viết tắt của General Purpose Input Output (vào ra cơ bản), là chân có thể được sử dụng tùy vào mục đích của người dùng. Nó có thể thiết lập là chân đọc dữ liệu (chân vào), chân xuất dữ liệu (chân ra). Giống với chân vào/ra của vi điều khiển.
Đặc trưng của GPIO:
- Có thể cấu hình vào/ra
- Có thể cho phép sử dụng hoặc vô hiệu hóa cho sử dụng mục đích khác
- Giá trị vào có thể đọc
- Giá trị xuất ra có thể đọc hoặc ghi
- Giá trị vào thường được sử dụng như là yêu cầu ngắt IRQ
GPIO thường được nhóm thành các cổng, mỗi cổng có 8 chân hoặc 32 chân.
Trong Linux, mỗi chân gpio có tương ứng một thư mục /sys/class/gpio/gpioXXX/ (XXX là thứ tự chân trong gpio) trong root filesystem, cho phép cấu hình chức năng, xuất dữ liệu,…
Thứ tự chân trong gpio được tính như sau:
XXX = ((Số thứ tự cổng-1) * số chân của cổng) + số thứ tự chân
Ví dụ: với chân 1 của cổng 5 (gpio5_01), mỗi cổng gpio có 32 chân thì XXX = (5-1)*32 + 1= 129.
Vậy thư mục trong root filesystem dành cho gpio5_01 là /sys/class/gpio/gpio129
Trong thư mục gpio có các file là direction, value, edge dùng để cấu hình hoặc và vào/ra dữ liệu, ý nghĩa của các tệp như sau:
Tham số |
Giá trị |
Ý nghĩa |
---|---|---|
direction |
in hoặc out |
Cấu hình chân là vào/ra, in là chân vào, out là chân ra |
value |
0 hoặc 1 |
Xuất giá trị ra/Đọc giá trị ở chân trong trường hợp chân được cấu hình Ra/Vào tương ứng |
edge |
none, rising, falling, both |
Cấu hình cạnh ngắt cho chân: - none: chân không tạo ngắt - rising: chân tạo ngắt khi có cạnh lên - falling: chân tạo ngắt khi có cạnh xuống - both: chân tạo ngắt khi có bất kì một cạnh lên hoặc xuống |
Lập trình ouput (xuất dữ liệu):
Với chức năng của các file trong thư mục gpio như trên, để xuất dữ liệu (output) ra một chân gpio bất kì ta làm như sau:
TT |
Nội dung |
Thiết lập tương ứng trong thư mục gpio |
---|---|---|
1 |
Thiết lập chân gpio là chân output |
thiết lập giá trị ‘out’ cho direction |
2 |
Xuất giá trị 0 hoặc 1 |
ghi giá trị ‘0’ tới value nếu xuất giá trị 0, ‘1’ nếu xuất giá trị 1 |
Lập trình input (đọc dữ liệu)
Thủ tục để đọc dữ liệu từ chân gpio phức tạp hơn đối với xuất dữ liệu, cụ thể như sau:
TT |
Nội dung |
Thiết lập tương ứng trong thư mục gpio |
---|---|---|
1 |
Thiết lập chân gpio là chân input |
thiết lập giá trị ‘in’ cho direction |
2 |
Thiết lập cạnh ngắt |
Rising, falling hoặc both |
3 |
Chờ ngắt bằng hàm poll(…) Mỗi khi có ngắt hàm này sẽ trả về giá trị |
res = poll(&gpio_poll_fd,1,-1); |
Tremendous site. Literate articles. Thanks to author. Salvage your website as a favorite
Tremendous site. Literate articles. Thanks to author. Save your website as a favorite
Video
Bài viết mới
Bài viết xem nhiều
Tremendous site. Literate articles. Thanks to author. Conserve your website as a favorite