ابدأ مع I2C على BeagleBone Green Wireless - 💡 Fix My Ideas

ابدأ مع I2C على BeagleBone Green Wireless

ابدأ مع I2C على BeagleBone Green Wireless


مؤلف: Ethan Holmes, 2019

يتعلق هذا البرنامج التعليمي المصغر باستخدام I2C (Inter-Integrated Circuit) على لوحة BeagleBone Green Wireless. تحتوي مكتبة BeagleBone Black Adafruit I2C الحالية على بعض مشكلات التوافق مع BeagleBone Green Wireless (BBGW). لا يوجد الكثير من الوثائق حول استخدام BBGW المدمج في مكتبة I2C ومكتبة المرايا ، وشعرت أن هناك حاجة إلى منشور.

اقامة

عند استخدام مكتبة I2C على BeagleBone أو Raspberry Pi ، توجد مكتبات زوجين للاختيار من بينها. يمكنك استخدام مكتبة Adafruit الشهيرة أو مكتبة mraa المضمنة. باستخدام محطة BeagleBone أو Raspberry Pi (محطة linux) ، يمكنك قراءة ناقل I2C دون الحاجة إلى معرفة عنوان الرقيق الخاص بالجهاز. للقيام بذلك ، استخدم الأمر "i2cdetect -y -r 0" ، حيث يكون الرقم هو الجهاز المُرقّم على ناقل I2C. للعثور على جهازك ، قم بإعادة إرسال الأمر في الجهاز مع زيادة الرقم ، حتى تجد القراءة في الجهاز مع معرف تسجيل ذلك الجهاز معروضًا بالسداسي عشرية.

على سبيل المثال ، يعتبر مقياس التسارع الذي يحمل رقم 42 ، والذي أبحث عنه ، هو الحافلة ذات الرقم "1" في قراءات "i2cdetect -y -r 1" في المحطة الطرفية.

كما ترون التسجيل 0x0d هو سجل رقم تعريف الجهاز. يمكننا أن نرى عرافة 0x2a والتي تترجم إلى 42 عشري. لذلك أعرف أن BeagleBone أو Raspberry Pi يفسر هذا الجهاز باعتباره الناقل "1" في أوامر i2cdetect أو i2cdump. يصبح هذا مهمًا في مكتبة mraa التي تستخدم هذا الرقم لمعالجة جهاز الرقيق. مكتبة adafruit لا تحتاج إلى هذا الرقم.

باستخدام المكتبات

عند كتابة برنامج بيثون إما على BeagleBone أو Raspberry Pi ، نحتاج إلى اختيار مكتبة واستيرادها بمجرد تثبيتها. يحتوي BeagleBone Green Wireless على مكتبة mraa المضمنة بالفعل ، لذلك ليست هناك حاجة لتثبيتها مثل مكتبة adafruit. عند استخدام هذه المكتبات للاتصال i2c ، تحتاج إلى إعداد العنوان ، ثم استخدام أوامر القراءة والكتابة. بالنسبة لمكتبة mraa i2c ، نستخدم أول مكالمة ، وهي i2c = mraa.I2c (2 ، True).

هذا يعني أننا نقوم بتعيين المتغير i2c إلى الجهاز على الحافلة. الرقم 2 يأتي من الأمر i2cdetect المذكور من قبل. بمجرد تعيين المتغير "i2c" ، يمكننا معالجته مباشرةً باستخدام العنوان (I2C النفس, عنوان uint8_t) أمر. على سبيل المثال ، إذا كان عنوان الجهاز في ورقة البيانات هو 0x1D ، فسنكتب السطر i2c.address (0x1D) لتهيئته. بعد ذلك ، نكتب المؤشر إلى العنوان (0x01) لتهيئة المؤشر على الجهاز.

لتكوين الجهاز ، يتعين علينا كتابة البيانات للتسجيلات على الجهاز لإعداد جهاز i2c نفسه. نكتب إلى سجل باستخدام دالة writeReg (). عندما تكون المعلمتان الموجودتان بين قوسين ، اكتب wrR (تسجيل العنوان ، البيانات) بتنسيق uint_8. عند القراءة من الجهاز ، نستخدم readReg () ، حيث المعلمة 1 في الأقواس هي readReg (عنوان التسجيل) بتنسيق unit_8. ويرد مثال أدناه:

استيراد مرا

i2c = mraa.I2c (2 ، صحيح)

i2c.address (0x1D)

i2c.writeReg (0x01 ، 0)

i2c.writeReg (0x17،0x08)

deviceID = i2c.readReg (0x0d)

Adafruit

تتطلب مكتبة Adafruit حزمة "python-smbus" المثبتة على جهازك من أجل استخدامها. أول مكالمة لإعداد عنوان الجهاز المدرج في ورقة البيانات هي i2c = Adafruit_I2C (device_address) حيث 'device_address' هي القيمة السداسية لعنوان الجهاز. بعد ذلك ، نقوم بتهيئة المؤشر على الجهاز من خلال إعداد السجل 0x01 إلى 0x00 باستخدام الأمر i2c.write8 (تسجيل ، بيانات). مما يعني أننا نرغب في كتابة 8 بتات في السجل. يمكننا بعد ذلك تعيين سجلات التكوين للجهاز باستخدام الأمر i2c.write8 () مرة أخرى باستخدام السجل والبيانات المملوءة. الطريقة التي نقرأ بها من معظم الأجهزة هي قراءة 8 بتات في وقت واحد من السجل. لقد قمنا بتعيين متغير نريد تعيين البيانات إليه. في هذه الحالة يكون "معرف الجهاز". نستخدم الأمر i2c.readU8 (تسجيل) لقراءة 8 بت غير موقعة من السجل 0x0d ، وهو سجل معرف الجهاز. ويرد مثال أدناه:

من Adafruit_I2C استيراد Adafruit_I2C

i2c = Adafruit_I2C (0x1D)

i2c.write8 (0x01،0x00)

i2c.write8 (0x17،0x08)

deviceID = i2c.readU8 (0x0d)

الفرق في المكتبات

تتطلب مكتبة Adafruit تثبيت حزمة python-smbus في حين أن مكتبة mraa لا تتطلب ذلك. تتطلب مكتبة mraa العثور على رقم الجهاز على الحافلة باستخدام 'i2cdetect' الأمر لإعداد العنوان قبل البدء في كتابة سجلات القراءة. المكتبات متشابهة في بناء الجملة ولكنها مختلفة في الإعداد. يجب أيضًا تثبيت مكتبة adafruit من مصدر خارجي وليست قياسية في Beaglebone Green Wireless مثل mraa. حتى تتمكن من البدء في كتابة التعليمات البرمجية في التمهيد الأول لأعلى.

مرجع المكتبة

mraa:

mraa.I2c (mraa :: I2c النفس, حافلة int, bool الخام = خطأ)

عنوان(I2C النفس, عنوان uint8_t) → mraa :: النتيجة

اقرأ(I2C النفس, uint8_t * البيانات) → كثافة العمليات

readByte (I2C النفس) → uint8_t

readBytesReg (I2C النفس, uint8_t ريج, uint8_t * البيانات)

readReg (I2C النفس, uint8_t ريج) → uint8_t

readWordReg (I2C النفس, uint8_t ريج) → uint16_t

اكتب(I2C النفس, uint8_t const * البيانات) → mraa :: النتيجة

writeByte (I2C النفس, uint8_t البيانات) → mraa :: النتيجة

writeReg (I2C النفس, uint8_t ريج, uint8_t البيانات) → mraa :: النتيجة

writeWordReg (I2C النفس, uint8_t ريج, uint16_t البيانات) → mraa :: النتيجة

(مصدر)

Adafruit:

فئة Adafruit_I2C

الطرق المحددة هنا:

__init __ (self، address، busnum = -1، debug = False)

errMsg (النفس)

readList (النفس ، ريج ، الطول)

اقرأ قائمة البايتات من جهاز I2C

readS16 (النفس ، ريج)

يقرأ قيمة موقعة 16 بت من جهاز I2C

readS16Rev (النفس ، ريج)

يقرأ قيمة 16 بت موقعة من جهاز I2C مع ترتيب البايت rev

readS8 (النفس ، ريج)

يقرأ بايت موقعة من جهاز I2C

readU16 (النفس ، ريج)

يقرأ قيمة 16 بت غير موقعة من جهاز I2C

readU16Rev (النفس ، ريج)

يقرأ قيمة 16 بت غير موقعة من جهاز I2C بترتيب بايت بايت

readU8 (النفس ، ريج)

قراءة بايت غير موقعة من جهاز I2C

reversByteOrder (الذات ، البيانات)

لعكس ترتيب البايت لقيمة int (16 بت) أو طويلة (32 بت)

write16 (الذات ، ريج ، القيمة)

يكتب قيمة 16 بت لزوج التسجيل / العنوان المحدد

write8 (الذات ، ريج ، القيمة)

يكتب قيمة 8 بت للسجل / العنوان المحدد

writeList (النفس ، ريج ، قائمة)

يكتب مجموعة من وحدات البايت باستخدام تنسيق I2C

(مصدر)

هذا هو ... حظ سعيد!



قد تكون مهتمة

صناع في العالم العربي

صناع في العالم العربي


من التطبيق العملي إلى الأعلى: 9 مشاريع مصنوعة من التصنيع الرقمي

من التطبيق العملي إلى الأعلى: 9 مشاريع مصنوعة من التصنيع الرقمي


تشارك أمة صناع البيانات من 100 مكان صناعي (ويمكنك المشاركة ، أيضًا!)

تشارك أمة صناع البيانات من 100 مكان صناعي (ويمكنك المشاركة ، أيضًا!)


يعمل Datamancer سحره ، على سطح المكتب ، في Maker Faire

يعمل Datamancer سحره ، على سطح المكتب ، في Maker Faire






المشاركات الأخيرة