Professional Documents
Culture Documents
Mục Lục
QUY ƯỚC..................................................................................................................... 2
HÌNH MINH HỌA........................................................................................................3
BẢNG............................................................................................................................ 4
LỜI MỞ ĐẦU................................................................................................................ 5
THƯ VIỆN NGÔN NGỮ LẬP TRÌNH C.....................................................................6
GPIO OUTPUT.............................................................................................................9
GPIO INPUT...............................................................................................................11
Tài liệu tham khảo.......................................................................................................12
QUY ƯỚC
BẢNG
Bảng 1: Chức năng sysfs cho gpio.................................................................................6
Bảng 2: Thư mục gpio của ESYS-6ULL.......................................................................6
LỜI MỞ ĐẦU
GPIO là viết tắt của General Purpose Input Output, 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. ESYS-
6ULL có 05 cổng (GPIO1 ÷ GPIO5), mỗi cổng có 32 chân.
ESYS-6ULL được trang bị sẵn phần cứng mô phỏng chức năng gpio cho phép người
dùng không cần kết nối thêm với phần cứng bên ngoài mà vẫn mô phỏng được chức
năng:
+ 02 chân gpio điều khiển hiển thị led, mô phỏng chức năng gpio output;
+ 01 phím ấn, mô phỏng chức năng gpio input.
Trong Linux, mỗi chân gpio có tương ứng một thư mục trong root filesystem, cho
phép cấu hình chức năng, xuất dữ liệu,... Ví dụ: thư mục /sys/class/gpio/gpio128/ dùng
để cấu hình cho GPIO5_00 (chân 0 của cổng 5), bên trong thư mục này có các file
direction, value, edge với chức năng được nêu trong Bảng 1: Chức năng sysfs cho gpio
Tài liệu này sẽ hướng dẫn người dùng viết ứng dụng gpio input và gpio output chạy
trên ESYS-6ULL.
Toàn bộ source code ví dụ trong tài liệu này người dùng tải tại địa chỉ
http://esystechs.vn/download/download.php?id=16
+ tệp readme: giới thiệu ngắn gọn và cách sử dụng thư viện
- Giao diện lập trình ứng dụng của thư viện: xem trong tài liệu html
- Sử dụng thư viện: các bước biên dịch thành executive file khi sử dụng các hàm trong
thư viện:
+ Sau khi tải thư viện về, giải nén
+ Tạo môi trường biên dịch (Xem phần “Chuẩn bị toolchain để biên dịch ứng
dụng” trong phần 1.1.3 của tài liệu http://esystechs.vn/download/download.php?
id=15)
+ Biên dịch: $CC o <tên file chạy> ./esys6ull_gpio.o <file *.c ví dụ>
GPIO OUTPUT
ESYS-6ULL bố trí 02 chân gpio điều khiển hiển thị LED để cho mục đích sử dụng
gpio là chân output.
Chân GPIO LED Định nghĩa trong thư viện
GPIO5_01 (/sys/class/gpio/gpio129/) D1 PIN_D1
GPIO5_02 (/sys/class/gpio/gpio130/) D2 PIN_D2
Vị trí của D1 và D2 trên board vui lòng xem tài liệu [1]
Nguyên lí điều khiển LED trên ESYS-6ULL:
Vậy, nếu gpio xuất giá trị 0 thì led sẽ sáng, 1 thì led sẽ tắt.
Workflow điều khiển LED tắt/sáng:
START
value=1
Tắt LED
END
02 LED trên ESYS-6ULL tương tự nhau, cách thức điều khiển LED này cũng sẽ tương
tự đối với LED kia.
Thực hiện sơ đồ điều khiển LED trên bằng lệnh ngôn ngữ c:
Chức năng Lệnh bằng ngôn ngữ C
Thiết lập là chân output GPIODirection(PIN_D1, OUT)
Vào vòng lặp 05 lần
Bật LED sáng GPIOWrite(PIN_D1, LOW)
Delay 0,5 giây usleep (500000)
Tắt LED GPIOWrite(PIN_D1, HIGH)
Delay 0,5 giây usleep (500000)
Từ source code, người dùng có thể tự biên dịch ra executive file như sau:
$CC o demo_blink_led1 ./lib/esys6ull_gpio.o ./esys6ull_gpio_demo_blinkled.c
GPIO INPUT
ESYS-6ULL bố trí 01 chân gpio nhận biết trạng thái của phím ấn SW1, giúp người
dùng chạy chương trình mô phỏng gpio input mà không cần kết nối thêm phần cứng:
Chân GPIO Input Phím ấn Định nghĩa trong thư viện
GPIO5_00 (/sys/class/gpio/gpio128/) SW1 PIN_BUTTON0
Vị trí của SW1 trên board vui lòng xem tài liệu [1]. Ban đầu, phím ấn chưa ấn, chân
GPIO5_00 ở trạng thái mức tích cực cao, khi có phím ấn xuống mức tích cực thấp.
Vậy khi có phím ấn sẽ có sườn xuống tác động.
Workflow đọc trạng thái phím ấn:
START
kiến phím ấn
Từ source code, người dùng có thể tự biên dịch ra executive file như sau:
$CC o demo_button ./lib/esys6ull_gpio.o ./esys6ull_gpio_demo_key.c