Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
58 Часть /. Общие принципы устройства и функционирования Аtте/ А VR меняясь, например, при адресации микросхем памяти. Таким образом, мы получаем возможность разобраться, к какому именно устройству в тот или иной момент про изводится обращение . Несколько таких выводов могут обеспечить управление не сколькими устройствами, подсоединенными к шине данных, при этом остальные линии шины объединяются . На вывод CS могут быть «навешены» и дополнительные функции (например, перевод микросхемы в «спящее» состояние с микропотреблением). Потому даже когда соединены всего два устройства, линия CS обычно все равно требует специ ального управления. Рассмотрим функционирование этой линии применительно к интерфейсу SPI в МК АVR подробнее. Чтобы исключить конфликты при попытке одновременной пере дачи данных, в каждый момент времени одно из устройств выполняет функции ве дущего (Master), а все остальные - ведомого (Slave, что означает «слуга»). Отме тим, что в общем случае роли ведущий - ведомый в процессе работы могут ме няться, но ведущий на линии в каждый момент времени может быть только один. Четвертый провод в аппаратном интерфейсе SPI и является аналогом «выбора кри сталла» и носит название SS (Slave Select, выбор ведомого) . Правильно обозначать его также с инверсией - SS , т. к. он во всем аналогичен описанной ранее функ циональности вывода CS . Естественно, в большинстве случаев ведущим устройством выступает контроллер. Для ведущего состояние его входного вывода SS не меняется, и вывод можно было бы использовать для других надобностей, с одним только нюансом - при работе с аппаратным SPI следует учесть, что если его вывод SS сконфигурирован как вход (по умолчанию), то на него должен быть подан высокий уровень напряжения . При подаче низкого уровня модуль SPI автоматически переключится в режим ведомого, даже если это произойдет во время передачи данных. Таким образом, чтобы этот вывод не мешал работе, его следует либо сконфигурировать на выход (тогда его можно задействовать как обычный вывод порта), либо оставить сконфигурирован ным на вход с подключением «подтягивающего» резистора (т. е. с записью значе ния 1 в этот разряд). В последнем случае для нормальной работы SPI никакие сигналы на него подавать нельзя . А для управления выводом SS ( CS ) ведомой микросхемы можно использовать любой цифровой выход - в том числе и SS , сконфигурированный на выход. Названия остальных линий SPI знакомы каждому, кто уже имел опыт последова тельного программирования АVR, - это информационные линии : MISO (Master In Slave Out), MOSI (Master Out S lave In) и линия для подачи тактовых импульсов SCK. Как правило, тактовые импульсы подаются ведущим (как вариант- внеш ним источником), в режиме ведомого вывод SCK работает только на вход. В отличие от симметричного UART, где вывод TxD может только передавать дан ные, а RхD - только принимать (поэтому у разных устройств их следует соединять перекрестно), в интерфейсе SPI одноименные вывqды MISO и MOSI соединяются между собой, а направление передачи задается выбором режима ведущий - ве домый.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==