Apakah ada perpustakaan sederhana untuk berbicara dengan I2C untuk C ++? Saya telah menemukan beberapa hal untuk python dan Java, tetapi saya ingin C ++. Saya berharap seseorang telah mem-porting perpustakaan Arduino Wire sehingga saya bisa menggunakan kode yang sudah saya tulis untuk Arduino.
12
Jawaban:
Ada header i2c-dev di ruang pengguna Linux. Saya tidak ingat apakah header ini dikirimkan dengan paket lm-sensor, atau jika perlu diinstal dari sumber. Saya akan memeriksa repositori paket distro Anda. xGoat memiliki artikel bagus yang membahas persiapan & penggunaan.
Kode sumber untuk i2c-tools ( unduh ) adalah contoh yang bagus di
C
. Saya telah melihat beberapaC++
perpustakaan sederhana membungkus fungsi-fungsi ini. Saya akan merekomendasikan pembuatan perpustakaan Anda sendiri sesuai dengan kebutuhan Anda. Contoh-contoh hebat lainnya dapat ditemukan di Github, seperti perpustakaan I2CBus inisumber
Saya baru saja mulai menggunakan perpustakaan pigpio dan saya sangat terkesan. Saya terutama menyukai mode bit bang, karena memungkinkan Anda untuk menggunakan dua pin GPIO sebagai antarmuka I2C, asalkan mereka memiliki resistor pullup. Jika Anda menggunakan PI2, tidak ada banyak kelemahan untuk menggedor, karena Anda memiliki 4 CPU. Yang menyenangkan tentang perintah bit bang adalah mereka mengambil daftar "address, write, data, read, start, stop" byte perintah sehingga Anda dapat menjalankan banyak I / Os dengan satu panggilan. Ini adalah satu-satunya hal yang saya temukan yang andal menjalankan transaksi mulai berulang, yang diperlukan oleh banyak perangkat yang mengambil nomor register pada awal perintah baca. Perpustakaan didokumentasikan dengan baik dan mudah digunakan.
Di bawah ini adalah program uji yang membaca register suhu pada MAX31785. 4 menetapkan alamat dengan byte berikutnya, 2 = mulai, 7 = menulis yang diikuti oleh jumlah byte dan byte data, 3 = berhenti, 6 = membaca yang diikuti oleh jumlah byte. Panggilan mengembalikan setiap byte data yang dibaca bersama dengan jumlah byte.
sumber
Seperti yang disebutkan oleh emcconville ada header i2c-dev di ruang pengguna Linux (
#include <linux/i2c-dev.h>
). Selain itu, Anda memerlukan perangkat karakter untuk membaca. Ini dapat dilakukan dengan memuat modul yang benar.i2c_bcm2708
untuk pengemudi tingkat rendah dani2c-dev
untuk menghasilkan tipuan karakter untuk bus. Menerapkan ...untuk memuat mereka dengan cepat. Menerapkan ...
dan unblacklist
i2c_bcm2708
di/etc/modprobe.d/raspi-blacklist.conf
untuk membuat/dev/i2c-0
dan/dev/i2c-1
muncul secara permanen.Mulai sekarang Anda dapat mengikuti petunjuk tentang cara menggunakan I²C del maestro sendiri.
Saya lebih suka metode ini karena ini adalah platformagnostic. Anda dapat menggunakan
linux/i2c-dev.h
dengan perangkat lain juga, selama ada driver I²C. WiringPi terikat pada rPi.Salam
MEMPERBARUI:
Informasi ini sudah usang. Periksa pos ini untuk penggunaan susunan perangkat.
sumber
Ada WiringPi yang saya pikir melakukan apa yang Anda inginkan. Ada juga pembungkus untuk Pascal, Java, Python, Perl, TCL dan Ruby. Selain itu, seseorang mungkin ingin menjelajahi tautan serupa:
sumber