ฉันจะใช้ I2C เพื่อคุยกับเซ็นเซอร์ได้อย่างไร


29

ฉันจะพูดคุยกับเซ็นเซอร์ดิจิทัลผ่านอินเทอร์เฟซI²Cได้อย่างไร

ฮาร์ดแวร์:
พินใดบน GPIO ของ Raspberry Pi ฉันสามารถใช้ได้

ซอฟต์แวร์:
มีห้องสมุดI²Cใดบ้าง

คำตอบ:


23

มีข้อมูลมากมายเกี่ยวกับ RPIO ของ GPIO ที่นี่: http://elinux.org/Rpi_Low-level_peripherals

คุณสามารถตั้งโปรแกรมพิน GPIO สำหรับI²Cได้ แต่:

ตั้งล่วงหน้า Pin 3 (SDA0) และ Pin 5 (SCL0) เป็นอินเตอร์เฟสI²C ดังนั้นจึงมีตัวต้านทาน 1.8 กิโลห์ห์มขึ้นมาบนบอร์ดสำหรับหมุดเหล่านี้

หน้าวิกินั้นมีตัวอย่างรหัส GPIO ระดับต่ำสำหรับภาษาต่างๆที่ควรเริ่มใช้งาน หากคุณต้องการทบทวนสิ่งที่I²Cเป็นจริงนี่คือสิ่งที่ต้องคำนึงถึง RPi ด้วย

สำหรับการควบคุมI²Cที่เฉพาะเจาะจงห้องสมุดไพ ธ อนนี้อาจมีประโยชน์ซึ่งจะกล่าวถึงในโพสต์บล็อกนี้ซึ่งรวมถึงตัวอย่างโค้ด


มีความคิดเห็นเกี่ยวกับโอกาสในการปรับใช้ Edison Sparkfun GPIO สำหรับ I2C หรือไม่
geotheory

7

มีการพูดคุยกันมากมายเกี่ยวกับเรื่องนี้ นี่คือสิ่งที่ฉันอ่านและล้อเล่นกับฉัน:

  1. การสนับสนุน I2C ไม่ได้ถูกสร้างไว้ในเคอร์เนลเริ่มต้นด้วย Debian "squeeze"
  2. เคอร์เนลที่กำหนดเองจะต้องรวบรวมกับโมดูล i2cspi ( นี่คือข้อความที่ตัดตอนมาจาก GIT )
  3. ไดรเวอร์ที่ได้รับการเขียนจนถึงขณะนี้มีเฉพาะสำหรับเคอร์เนล 3.2 และใหม่กว่าและผู้เขียนไม่มีความตั้งใจที่จะสนับสนุน 3.1.9+ เนื่องจากช่องโหว่ด้านความปลอดภัย ( Chris Boot กล่าวถึงไดรเวอร์ )
  4. โชคดีที่การกระจาย Debian "เสียงดัง" ซึ่งเป็นรุ่นเบต้าสำหรับ RasPi จะมีไดรเวอร์นี้อยู่ มันมาพร้อมกับเคอร์เนล 3.2

2
ใช่ดังที่คุณพูดถึงมันถูกสร้างไว้ในเคอร์เนลมาตรฐานในตอนนี้ - อย่างเป็นทางการทั้ง Raspbian และ Debian wheezy distros ฉันทำตามคำแนะนำที่นี่ซึ่งง่ายต่อการติดตามและฉันมีอุปกรณ์ I2C แสดงใน / dev ... raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 มีรายละเอียดเพิ่มเติมเล็กน้อยที่นี่หากต้องการ: robot- electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder

หากต้องการรายละเอียดเพิ่มเติมให้เก็บข้อมูลไว้ที่นี่แทนที่จะอยู่บนเว็บลิงก์และหวังว่าข้อมูลนี้จะไม่ล้าสมัย: ในฐานะที่เป็นรูป Wheezy 2012-09-18 คุณแก้ไข/etc/modprobe.d/raspi-blacklist.confและแสดงความคิดเห็นในรายการสำหรับi2c-bcm2708; จากนั้นแก้ไข/etc/modulesและต่อท้ายi2c-dev; จากนั้นรีบูต ตอนนี้คุณควรมี/dev/i2c-0ไฟล์พิเศษซึ่งใช้งานง่ายมาก
เมียน


2

ฮาร์ดแวร์:

ตามที่ระบุไว้โดย Tapio ฮาร์ดแวร์มีเอกสารอย่างดีที่http://elinux.org/Rpi_Low-level_peripherals

ซอฟต์แวร์:

มีส่วนหัว i2c-dev ใน Linux userspace ( #include <linux/i2c-dev.h>) ยิ่งกว่านั้นคุณต้องมีตัวละครที่เหมาะสมเพื่ออ่าน สามารถทำได้โดยการโหลดโมดูลที่ถูกต้อง i2c_bcm2708สำหรับไดรเวอร์ระดับต่ำและi2c-devสำหรับการสร้างตัวละครที่เหมาะสมสำหรับรถบัส ใช้ ...

sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>

สำหรับการโหลดได้ทันที ใช้ ...

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

และ unblacklist i2c_bcm2708ใน/etc/modprobe.d/raspi-blacklist.confการให้/dev/i2c-0และการ/dev/i2c-1แสดงอย่างถาวร

จากนี้ไปคุณสามารถทำตามคำแนะนำในการใช้I²C del maestro ได้

ฉันชอบวิธีนี้มากกว่าคนอื่น ๆ เพราะมันเป็น platformagnostic คุณสามารถใช้linux/i2c-dev.hกับอุปกรณ์อื่น ๆ ได้เช่นกันตราบใดที่มีไดรเวอร์I²Cระดับต่ำอยู่

ความนับถือ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.