Mô-đun mở rộng BPI I2C GPIO

0
295

Mô-đun này được thiết kế nhằm mục đích mở rộng GPIO của Banana Pi, giúp giải quyết vấn đề thiếu cổng IO trên bo mạch. Mô-đun sử dụng chip PCF8574 để mở rộng 8 IO hai chiều. Kết nối mô-đun với Banana Pi thông qua bus I2C. Trong mô-đun có 8 địa chỉ I2C, người dùng có thể chọn một trong số đó thông qua thiết lập jumper “ADDR”. Người dùng cũng có thể chọn mức điện 5V hoặc 3,3V. Mô-đun có bảo vệ cách ly, có thể đảm bảo an toàn cho Banana Pi do sự quá áp từ bên ngoài. Hơn nữa, có thể cùng lúc sử dụng nhiều mô-đun bằng cách xếp tầng.

Tính năng sản phẩm

1. 8 IO hai chiều

2. 8 I2C-địa chỉ

3. Bảo vệ cách ly

4. Sử dụng API wiringPi, mã mẫu

5. Giao diện I2C-bus 100 kHz (I2C-bus chế độ tiêu chuẩn)

Ứng dụng tiêu biểu

1. Bảng và màn hình LED

2. Bàn phím

3. Các dụng cụ đo lường và kiểm tra

4. Driver cho màn hình chữ số

5. Drive lattice screen

Thông số sản phẩm

1. Điện áp làm việc: 2,5V-6V

2. Đện áp IO: 3,3V hoặc 5,5

3. Mở rộng 8 IO hai chiều

4. Bus I2C

5. Giao diện I2C-bus 100 kHz (I2C-bus chế độ tiêu chuẩn)

6. Hoạt động từ −400 C đến + 850 C

Port

1. Cổng kết nối với Banana Pi

2. Cổng để xếp tầng với Banana Pi

3. EXT0-EXT7 mở rộng GPIO

4. Jumper lựa chọn mức điện áp

5. Jumper lựa chọn địa chỉ I2C

Lắp mô-đun vào vị trí có chữ “BPI IN”. Hướng chính xác để lắp mô-đun là phía trên PCB của Banana Pi; EXT0-EXT7 là phần mở rộng GPIO, người dùng có thể sử dụng DuPont Line để kết nối thiết bị ngoại vi. Header gần với chữ “EXT” mở rộng GPIO của Banana Pi là vị trí người dùng có thể xếp tầng các mô-đun tương tự hoặc khác nhau. Nếu muốn chuyển đổi mức điện, chỉ cần thiết lập jumper

PCF8574/74A cung cấp khả năng mở rộng I/O  từ xa có mục đích chung thông qua bus I2C hai chiều hai dây (clock nối tiếp (SCL), dữ liệu nối tiếp (SDA)).

Các thiết bị bao gồm 8 cổng quasi-bidirectional, giao diện bus I2C 100 kHz, 3 đầu vào địa chỉ phần cứng và đầu ra ngắt hoạt động giữa 2,5 V và 6 V. Cổng quasi-bidirectional port có thể được chỉ định độc lập làm đầu vào để giám sát trạng thái ngắt hoặc bàn phím, hoặc như một đầu ra để kích hoạt các thiết bị báo như đèn LED. Hệ thống master có thể đọc từ cổng đầu vào hoặc ghi vào cổng đầu ra thông qua một thanh ghi duy nhất.

Mức tiêu thụ dòng điện thấp 2,5uA (điển hình, tĩnh) rất phù hợp cho các ứng dụng di động và các cổng đầu ra khóa trực tiếp điều khiển đèn LED.

PCF8574 và PCF8574A giống hệt nhau, ngoại trừ phần cố định khác nhau của địa chỉ slave. 3 chân địa chỉ phần cứng cho phép 8 trong mỗi thiết bị trên cùng một bus I2C, vì vậy có thể có tối đa 16 bộ mở rộng I/O PCF8574/74A cùng nhau trên cùng một bus I2C, hỗ trợ lên đến 128 I/O (ví dụ: 128 đèn LED).

Đầu ra ngắt (INT) LOW có thể kết nối với logic ngắt của bộ vi điều khiển và được kích hoạt khi bất kỳ trạng thái đầu vào nào khác với trạng thái thanh ghi cổng đầu vào tương ứng của nó. Nó có nhiệm vụ để báo hiệu sự thay đổi trạng thái đầu vào cho vi điều khiển và thiết bị cần được hỏi mà không cần vi điều khiển liên tục thăm dò thanh ghi đầu vào thông qua bus I2C. Hệ thống reset khi cấp nguồn hoạt động (POR) bên trong khởi tạo I/O làm đầu vào với nguồn dòng 100uA pull- up bên trong yếu.

Testbench:

1. Sử dụng: sudo i2cdetect –y –a 1 kiểm tra địa chỉ I2C

2. Sử dụng API wiringPi, khởi tạo mô-đun

3. Cài đặt chế độ IO thành OUTPUT, mức cao 5V và kiểm tra mức trạng thái bằng đồng hồ vạn năng

4. Cài đặt chế độ IO thành OUTPUT, mức cao 3V và kiểm tra mức của trạng thái bằng đồng hồ vạn năng

5. Thiết lập chế độ IO thành INPUT, đầu vào mức cao 5V và kiểm tra trạng thái IO thông qua WiringPi

6. Thiết lập chế độ IO thành INPUT, đầu vào mức cao 3V và kiểm tra trạng thái IO thông qua wiringPi

7. Kết thúc kiểm tra

Cách sử dụng mô-đun I2C trên BPI-M3

OS: BPI-M3 Ubuntu15.10 (Kernel3.4)

Version: 1.0 HDMI

Bước 1: Tải WiringPI

$ git clone https://github.com/BPI-SINOVOIP/BPI-WiringPi.git1111 -b BPI_M3
$ cd BPI-WiringPi
$ chmod +x ./build
$ sudo ./build```

Bước 2: Kiểm tra BPI I2C GPIO mở rộng (PCF8574) để xem nó có đang đi đúng hướng hay không. (Địa chỉ 0x27) (số cổng I2c cho M3: 2)

sudo su
i2cdetect -y 2
.0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- 27 -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --```

Bước 3: Sao chép mã mẫu vào file i2c pcf8574.c

$ sudo vi i2c_pcf8574.c
Bước 4: Biên dịch i2c_pcf8574.c
$ gcc -o i2c_pcf8574 i2c_pcf8574.c -l wiringPi
Bước 5: Chạy  i2c_pcf8574
$ sudo ./i2c_pcf8574
Video Demo trên youtube:

Code mẫu

#include <wiringPi.h>
#include <pcf8574.h>
#include <stdio.h>
int main()
{
int i;
pcf8574Setup(100,0x27);
for(i=0;i<8;i++) pinMode(100+i,OUTPUT);
while(1)
{
i = 0;
for(i=0;i<=8;i++)
{
printf("Current LED = %d\n",100+i);
digitalWrite((100+i),HIGH);
delay(500);
digitalWrite((100+i),0);
delay(500);
}
} 
}

Biên dịch: Bắc Đặng

Để cập nhật tin tức công nghệ mới nhất và các sản phẩm của công ty AIoT JSC, vui lòng truy cập link: http://aiots.vn hoặc linhkienaiot.com

0 0 Phiếu bầu
Article Rating
Subscribe
Notify of
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả các bình luận