Як увімкнути SPI/ I2C на Raspberry Pi (і для чого їх використовувати)

Raspberry Pi можна використовувати практично для чого завгодно. Можна з упевненістю сказати, що Pi і аналогічні одноплатні комп'ютери стають повсюдними.

Коли ви починаєте експериментувати з висновками GPIO на Raspberry Pi, все стає ще цікавіше. Ми вже розглянули, що роблять всі ці висновки, тому тепер давайте подивимося, як включити протоколи SPI і I2C на вашому Pi і чому ви можете захотіти.


Що таке SPI на Raspberry Pi?

Перед зануренням коротко розгляньмо, що роблять ці два протоколи.

SPI (або послідовний периферійний інтерфейс) дозволяє мікроконтролеру, такому як Pi, обмінюватися даними з більш ніж 100 периферійними компонентами одночасно. Мікроконтролер діє як «ведучий» для всіх «підлеглих» компонентів і може зв'язуватися з ними з високою швидкістю. Ця схема описує просте з'єднання SPI:

Якщо ви вперше читаєте про SPI, це може здатися лякаючим, але продовжуйте в тому ж дусі! SCLK - це тактова частота, встановлена провідним, яка визначає швидкість, з якою інформація розподіляється між пристроями.

У кожному циклі (або «тіці») годинник і ведучий, і ведений відправляють і отримують один біт інформації. Для цього потрібні контакти MOSI (Master Out Slave In) і MISO (Master In Slave Out).

Вивід SS або Slave Select (позначений CE0 або CE1 на Pi) використовується, щоб повідомити підлеглому пристрою про обмін даними з провідним пристроєм чи ні - в будь-який момент часу. У більшості випадків кожен підлеглий пристрій вимагає свій власний висновок SS, але може мати загальні висновки SCLK, MOSI і MISO.


Деякі пристрої можуть бути «гірляндними», щоб розділити висновок SS, при цьому загальна кількість використовуваних висновків буде дорівнювати чотирьом, плюс два для харчування і заземлення. SPI відомий своєю неймовірною швидкістю і зазвичай використовується в зрушених регістрах або АЦП (аналого-цифрових перетворювачах) для передачі даних між пристроями.

На розширеному стартапі на каналі YouTube є простий підручник для SPI, який пояснює протокол далі:

Як включити SPI на Raspberry Pi

Щоб увімкнути SPI на Raspberry Pi, відкрийте raspi-config з терміналу, ввівши:

sudo raspi-config

Скористайтеся пунктом меню Параметри інтерфейсу і виберіть пункт P4 SPI Увімкнути/вимкнути автоматичне завантаження модуля ядра SPI. Виберіть Так у вікні запиту. SPI тепер включений!

Крім того, ви можете включити SPI з файлу/boot/config.txt. Відкрийте вікно термінала і введіть:

sudo nano /boot/config.txt


Знайдіть рядок, який говорить # dtparam = spi = on і вилучіть символ #. Яким би способом ви не включили SPI, перезавантажте Pi і SPI.

Що ви можете зробити з SPI на Raspberry Pi?

Незважаючи на те, що існують сотні різних проектів, в яких використовується безліч різних периферійних пристроїв SPI, хорошим початковим проектом є програмування вашого власного зчитувача RFID.

Ми використовували зчитувач MFRC-522 в нашому навчальному посібнику "Для ознайомлення з RFID-ароматизатором Raspberry Pi ознайомтеся з інструкцією piddlerintheroot.

Цей вид установки не тільки для електроніки хобі також. У нашій колекції кращих проектів Raspberry Pi, ми представили повномасштабну систему MES, яка працює з використанням Raspberry Pi і RFID, як частину великомасштабної фабричної роботи в Європі.

Що таке I2C на Raspberry Pi?


I2C - це протокол зв'язку, створений компанією Phillips Electronics, яка отримала широке поширення в хобі-проектах на основі мікроконтролерів. Причина цього очевидна - вона також використовує тільки два дроти замість чотирьох мінімальних SPI. Це також добре підтримується власними бібліотеками. Є багато компонентів, призначених для використання з I2C на Raspberry Pi. Хоча він повільніший SPI, він все ще працює досить швидко для більшості повсякденних завдань.

Подібно до SPI, протокол має провідний пристрій, такий як Pi, і підлеглий пристрій, такий як екран, регістр зсуву або драйвер двигуна.

Перше з'єднання між пристроями - це SCL (Serial Clock), який задається майстром для синхронізації передачі даних. Другий рядок - це SDA (послідовні дані), яка передає дані туди і назад між усіма пристроями на шині I2C.

Провідний пристрій починає зв'язок з початковим битом і семибітною шістнадцятковою адресою. Це повинно відповідати відомому пристрою, щоб вони могли спілкуватися. Ось так багато пристроїв можна використовувати тільки з двома проводами.

Провідний пристрій потім вказує, чи хоче він прочитати або записати (R/W) відомий пристрій, перш ніж отримати підтвердження або ACK назад.


YouTuber: розширені стартапи YouTuber: простий і докладний огляд I2C:

Як увімкнути I2C на Raspberry Pi

I2C також включено на Pi через меню raspi-config. Відкрийте термінал і введіть:

sudo raspi-config

За допомогою клавіш зі стрілками виберіть «Параметри інтерфейсу», а потім P5 I2C Увімкнути/вимкнути автоматичне завантаження модуля ядра I2C. Підтвердьте, що ви хочете включити протокол, і ви повинні побачити екран підтвердження.


Як і у випадку з SPI, ви також можете включити I2C, змінивши файл config.txt. Відкрийте термінал і введіть:

sudo nano /boot/config.txt

Змініть # dtparam = i2c_arm = on, вилучивши символ #.

Перезавантажте свій Pi, і I2C готовий до роботи!

Що ви можете зробити з I2C на Raspberry Pi?

I2C відмінно підходить для будь-якого проекту, який вимагає великої кількості виходів. Типове використання для ЖК-екранів, які вимагають до 16 контактів. I2C зводить це тільки до двох для зв'язку і двох для харчування і землі.

Багато РК-екрани поставляються з прикріпленим «рюкзаком» I2C, що значно спрощує їх налаштування і звільняє інші контакти Pi для інших датчиків і периферійних пристроїв.

OneRaspberryPiGuy має докладне керівництво на YouTube з налаштування та використання РК-екрану з I2C на Raspberry Pi

Використання SPI і I2C зберігає контакти!

SPI і I2C на Raspberry Pi, звичайно ж, не для початківців-любителів електроніки, але їм також нічого боятися.

Перед тим, як зануритися, було б непогано вивчити керівництво для початківців за Raspberry Pi, щоб вивчити основи.

Робота над прикладами проектів - найкращий спосіб вчитися, і ми з нетерпінням чекаємо того, що ви придумали! Хто знає, які дивні і чудові творіння Raspberry Pi ви будете робити?

COM_SPPAGEBUILDER_NO_ITEMS_FOUND