Raspberry Pi:Примеры/Библиотека WiringPi/Gertboard и WiringPi/Встроенные SPI-устройства

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



Gertboard и WiringPi: Встроенные SPI-устройства[1]

Gertboard оснащена двумя SPI-устройствами, которые подключены к блоку с перемычками – благодаря этому их можно напрямую подключить к шине SPI на Raspberry Pi. Шина SPI на Pi имеет два CS-контакта – это позволяет Pi «разговаривать» с двумя отдельными SPI-устройствами.

SPI-устройства на Gertboard – это 2-канальный аналогово-цифровой конвертер MCP3002 и 2-канальный цифро-аналоговый конвертер MCP4802. ЦА-конвертер позволяет отправлять аналоговые данные от Pi, а АЦ-конвертер – позволяет Pi считывать их. Оба этих компонента имеют 2 отдельных канала, к которым можно обращаться индивидуально.

Вольтовый диапазон при вводе аналоговых данных составляет от 0 до 3,3 вольт, а при выводе – от 0 до 2,047 вольт.

Формула, по которой рассчитывается значение для выдачи нужного напряжения на ЦА-конвертере, выглядит так:

Значение = Желаемое V х 255 / 2,047 вольта

Например, чтобы выдать 1,2 вольта, мы считаем 1,2 х 255 / 2,047 = 150.

Чтоб рассчитать входное напряжение исходя из значения, присланного АЦ-конвертером, нужно воспользоваться следующей формулой:

Напряжение = Присланное значение / 1023 х 3,3 вольта

Например, если мы получили значение «700», то входное напряжение будет 700 / 1023 х 3,3 = 2,26 вольта.

Чтобы использовать эти конвертеры, нам нужно сделать следующее:

  • Снять провода-перемычки с пяти SPI-контактов – они находятся на коннекторе J2 и называются GP7, GP8, GP9, GP10 и GP11
  • Поставьте перемычки на контакты CSnB, CSnA, MISO, MOSI и SCLK
  • Загрузите модуль SPI при помощи команды в gpio:
gpio load spi

С этого момента ваши Raspberry Pi и Gertboard готовы к использованию SPI-устройств, но для начала давайте сделаем пару тестов.

Подключите провод-перемычку от AD0 к DA0 в длинном ряду для перемычек, который находится в левой части Gertboard. Затем запустите следующие команды:

gpio gbw 0 128
gpio gbr 0

Таким образом, мы передаем на 0-ой канал ЦА-конвертера значение, стоящее в самом центре его диапазона (это 8-битный канал, поэтому данные, которые можно через него передавать, варьируются от «0» до «255»), а затем считываем на 0-ом канале АЦ-конвертера значение «0». Итоговым значением должно быть что-то около «322».

Теперь все эти расчеты, но подробней. Выходные данные имеют 8-битное разрешение (т.е. это значения от «0» до «255»). «128» – это число, стоящее посередине этого диапазона. Вольтовый диапазон на выходе составляет от 0 до 2,047 вольт, поэтому выходное напряжение для значения «128» будет:

2,047 х 128 / 255 = 1,038 вольт

Если мы подадим это напряжение на вход (где вольтовый диапазон составлять от 0 до 3,3 вольт, а диапазон значений – от «0» до «1023»), то в итоге получим значение «322»:

1,038 / 3,3 х 1023 = 322

Переместив провод-перемычку, я получаю на своей Gertboard то же значение и на 0-канале, и на 1-ом канале. Если у вас не получаются точно такие же цифры, не страшно. Отклонение в несколько процентов – не проблема.

Попытайтесь вписать другие цифры и проверьте, получается ли у вас предугадать входное значение. Также пробуйте другие каналы. Кроме того, если у вас есть мультиметр, настроенный на вольты, можно проверить выходное напряжение.

Итого

  • Убедитесь, что Gertboard настроена для использования SPI – правильно подключите перемычки и загрузите SPI-модуль
  • Есть 2 входных канала и 2 выходных канала
  • Вольтовый диапазон на выходе составляет от 0 до 2,047 вольт, а на входе – от 0 до 3,3 вольт

См.также

Внешние ссылки