Так как SPI не является универсальным стандартом, некоторые производители устройств SPI могут по-разному называть линии связи SPI. Линию выбора ведомого иногда называют CS, линию синхронизации - CLK; контакты MOSI и MISO ведомых устройств называют входом последовательных данных (SDI) и выходом последовательных данных (SDO) соответственно.
Передача данных по SPI синхронизируется тактовым сигналом и зависит от состояния линий SS. Все команды, отправляемые мастером, проявляются на входах MOSI, MISO, SCLK всех ведомых устройств. Состояние контакта SS сообщает устройству, игнорировать эти данные или принимать. При написании программы следует учитывать, что при передаче данных только один контакт SS должен иметь низкий уровень.
Последовательность действий для связи с устройством SPI выглядит следующим образом:
1. У становить низкий уровень на линии SS устройства, с которым хотите установить связь.
2. Переключать на тактовой линии уровень сигнала вверх и вниз со скоростью, меньшей или равной скорости передачи, поддерживаемой ведомым устройством.
3. На каждом такте отправлять 1 бит данных по линии MOSI или получать 1 бит данных по линии MISO.
- 190 -
4. Продолжать, пока передача (или прием) не закончится, и остановить переключения тактовой линии.
5. Установить на SS высокий уровень.
Обратите внимание, что на каждом такте данные должны быть отправлены (или получены). Например, далее в сценарии связи с цифровым потенциометром плата Arduino будет посылать данные, но ничего не получать от ведомого устройства.
9.3. Сравнение SPI и I2C
Многие виды устройств, в том числе акселерометры, цифровые потенциометры, дисплеи и т. п., доступны и в SPI- и в I2C-версиях. Что лучше выбрать? В табл. 9.3
перечислены некоторые преимущества устройств I2C и SPI. В конечном счете, выбор устройства зависит от конкретной ситуации. Большинство начинающих считают, что работать с устройствами SPI легче, чем с устройствами I2C.
Таблица 9.3. Сравнение протоколов SPI и I2C
Преимущества SPI | Преимущества I2C |
Может работать на более высокой скорости | Для организации обмена требуется только две линии |
Легче программируется | Имеет аппаратную поддержку Arduino |
Не требует подтягивающих резисторов | |
Имеет аппаратную поддержку Arduino |
9.4. Подключение цифрового потенциометра SPI
Теперь пора применить полученные знания на практике. Рассмотрим устройство управления яркостью светодиодов с помощью цифрового потенциометра ( кратко называемого digipot). В данном примере используем микросхему SPI цифрового потенциометра МСР4231 10ЗЕ. Доступно несколько вариантов данного чипа с различным значением сопротивления. Как и обычный потенциометр, цифровой имеет регулируемый вывод, который определяет сопротивление между двумя выводами микросхемы. Микросхема МСР4231 содержит два потенциометра на одном корпусе. Разрядность каждого из них составляет 7 бит, что определяет 128 значений в диапазоне от 0 до 10 кОм. Сначала с помощью цифрового потенциометра будем менять яркость свечения светодиода, а затем используем digipot для регулировки громкости динамика. Завершив эти два проекта, вы получите основу для реализации более сложных конструкций.
Прежде всего, следует изучить техническое описание микросхемы МСР4231, которое можно найти через поисковую систему Google. Ссылки на техническое опи-
- 191 -
сание для МСР4231 присутствуют на странице www.exploringarduino.com/content/ch9.
В техническом описании можно найти ответы на следующие вопросы:
• цоколевка микросхемы;
• какие выводы являются управляющими;
• как регулируется в данной микросхеме сопротивление потенциометра;
• какие команды SPI необходимы, чтобы управлять двумя потенциометрами.
Чтобы найти ответы на эти вопросы, на рис. 9.2-9.4 приведены некоторые важные фрагменты технического описания. Прежде всего, взгляните на цоколевку микросхемы МСР4231, изображенную на рис. 9.2.
Рис. 9.2. Цоколевка микросхемы МСР4231
При подготовке к работе с новым устройством необходимо сначала разобраться с назначением контактов. Вот назначение выводов МСР4231:
• РОА, POW и РОВ -выводы первого потенциометра;
• PIA, PIW и PIB-выводы второго потенциометра;
• VDD -вывод питания микросхемы 5 В;
• VSS -вывод подключения к земле;
• CS-контакт SS для интерфейса SPI, черта сверху означает, что активный уровень низкий (0 В -чип выбран, 5 В -не выбран);
• SDI и SDO - контакты последовательного ввода и вывода данных ( соответствуют MOSI и MISO);
• SCK -линия синхронизации SPI;
• SHDN и WP -контакты для выключения и защиты от записи, соответственно.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии