General Purpose Input Output (GPIO) trên Linux

Ngày đăng: 2018-07-07 | Giờ: 11:34 AM | view:  208850

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);

 

Danh sách bình luận

2019-03-09 20:04:27

Tremendous site. Literate articles. Thanks to author. Conserve your website as a favorite

2019-03-10 03:12:10

Tremendous site. Literate articles. Thanks to author. Salvage your website as a favorite

2019-03-11 22:48:46

Tremendous site. Literate articles. Thanks to author. Save your website as a favorite

2019-03-15 11:53:48

good spot very cooperative articles. add bookmarks

2019-03-15 17:32:45

a-ok site absolutely helpful articles. add bookmarks

2019-03-22 03:20:13

good site very cooperative articles. sum bookmarks

2019-03-22 03:36:30

genuine position hugely helpful articles. sum bookmarks

2019-03-22 03:49:46

a-ok site absolutely caring articles. combine bookmarks

2019-03-22 04:04:01

genuine position sheer caring articles. combine bookmarks

2019-03-22 04:17:34

genuine spot sheer helpful articles. add bookmarks

2019-03-22 04:31:21

good place very neighbourly articles. add bookmarks

2019-03-22 04:45:16

right position sheer helpful articles. add bookmarks

2019-03-22 04:59:26

right spot hugely caring articles. add bookmarks

2019-03-22 05:13:19

a-ok spot hugely neighbourly articles. sum bookmarks

2019-03-22 05:27:00

a-ok spot sheer cooperative articles. add bookmarks

2019-03-22 05:40:19

genuine site absolutely neighbourly articles. sum bookmarks

2019-03-22 05:53:41

good spot very cooperative articles. add bookmarks

Bình luận