Câu trả lời:
Có rất nhiều thông tin về GPIO của RPi's tại đây: http://elinux.org/Rpi_Low-level_perodesals
Theo đó, bạn có thể lập trình bất kỳ chân GPIO nào cho I²C, nhưng:
Chân 3 (SDA0) và Chân 5 (SCL0) được đặt sẵn để được sử dụng làm giao diện I²C. Vì vậy, có 1,8 kilohm kéo lên điện trở trên bảng cho các chân này.
Trang wiki đó cũng có một số ví dụ mã GPIO cấp thấp cho các ngôn ngữ khác nhau sẽ giúp bạn bắt đầu. Nếu bạn cần xem lại I²C thực sự là gì, thì đây là một trong đó cũng tính đến RPi.
Để kiểm soát I²C cụ thể, thư viện python này có thể hữu ích, nó được thảo luận trong bài đăng trên blog này , bao gồm một mẫu mã.
Rất nhiều cuộc thảo luận đang diễn ra về điều này. Đây là những gì tôi đọc và làm rối tung cho tôi thấy:
/etc/modprobe.d/raspi-blacklist.conf
và nhận xét mục nhập cho i2c-bcm2708
; sau đó chỉnh sửa /etc/modules
và nối thêm i2c-dev
; sau đó khởi động lại. Bây giờ bạn nên có một /dev/i2c-0
tập tin đặc biệt, rất dễ sử dụng.
Dưới đây là một số ví dụ tôi đã thực hiện
Phần cứng:
Như Tapio đã đề cập, phần cứng được ghi lại tốt tại http://elinux.org/Rpi_Low-level_perodesals
Phần mềm:
Có một tiêu đề i2c-dev trong không gian người dùng Linux ( #include <linux/i2c-dev.h>
). Hơn nữa, bạn cần một nhân vật quyết định để đọc từ. Điều này có thể được thực hiện bằng cách tải các mô-đun chính xác. i2c_bcm2708
cho trình điều khiển cấp thấp và i2c-dev
để tạo ra các ký tự cho các bus. Ứng dụng ...
sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>
để tải chúng trên bay. Ứng dụng ...
sudo sh -c 'echo "i2c-dev" >> /etc/modules'
sudo sh -c 'echo "options i2c_bcm2708 baudrate=<your preferred baudrate>\n" > /etc/modprobe.d/custom.conf
và unblacklist i2c_bcm2708
trong /etc/modprobe.d/raspi-blacklist.conf
để làm /dev/i2c-0
và /dev/i2c-1
hiển thị lên vĩnh viễn.
Từ bây giờ bạn có thể làm theo các gợi ý về cách sử dụng I²C del maestro.
Tôi thích phương pháp này hơn các phương pháp khác, vì nó là nền tảng. Bạn cũng có thể sử dụng linux/i2c-dev.h
với các thiết bị khác, miễn là có trình điều khiển I²C cấp thấp.
Trân trọng