Raspberry Pi:Примеры/Библиотека WiringPi/Gertboard и WiringPi/Встроенные SPI-устройства
Содержание | Введение | Продукты | Операционная система | Настройка | Основы Linux | Аппаратные средства | Неисправности | Типовые проблемы | Часто возникающие вопросы | Библиотеки | Примеры |
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 вольт