Современная электроника №9/2021

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 38 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 9 2021 Работа с последовательным интерфейсом SPI в программной среде Proteus 8.11 Часть 1 Рис. 1. Схема подключения устройств по интерфейсу SPI В статье рассматривается проектирование схем микроэлектронных устройств с использованием интерфейса SPI в Proteus на примере его реализации в микроконтроллерах AVR (семейства Mega) и STM32 (семейства Cortex-M3). Описаны особенности написания программного кода для инициализации интерфейса и работы с ним, а также моделирования схем, в которых проводится передача данных через SPI между двумя и тремя устройствами, сконфигурированными как master и slave. Выполнено отображение принятых ведомым устройством данных на экране виртуального терминала. С помощью осциллографа проведён контроль входных/выходных сигналов, присутствующих на выводах устройств схемы. Татьяна Колесникова (beluikluk@gmail.com) Введение Интерфейс SPI (Serial Peripheral Interface – последовательный перифе- рийный интерфейс) является высоко- скоростнымсинхроннымпоследователь- ныминтерфейсомиреализованво всех микроконтроллерах STM32Cortex-M3и AVR семейства Mega. Он обеспечивает обмен данными между микроконтрол- лером и различными периферийными устройствами, такими как АЦП, ЦАП, цифровые потенциометры, FLASH-ПЗУ, другие микросхемы и микроконтрол- леры. Каждый модуль SPI может рабо- тать в ведущемилиподчинённомрежи- ме, что позволяет ему связаться с любой другойинтегральной схемой, оснащён- ной интерфейсом SPI. Ведущий микро- контроллер можно связать с одним или несколькими ведомыми устройствами. Схема подключения устройств поинтер- фейсу SPI показана на рис. 1. Связь меж- ду устройствамиосуществляется с помо- щьюследующих цифровых сигналов: ● MOSI – выход данных для ведуще- го или вход данных для ведомого устройства; ● MISO – вход данных для ведущего или выход данных для ведомого устрой- ства; ● SCK – сигнал общей синхронизации интерфейса; ● SS – – выбор ведомого устройства. Ведущее устройство формирует один или несколько сигналов SS (Slave Select) для выбора ведомых устройств. При этом количество формируемых сигна- лов соответствует количеству ведомых устройств. Ведомое устройство получит данные только в том случае, если оно было выбрано ведущим. Передача данных осуществляется посредством линийMOSI иMISO. Про- цессом передачи данных управляет ведущее устройство (Master), формируя тактовые импульсы через линию SCK. Вывод SCK ведущего микроконтроллера является выходом тактового сигнала, а ведомого микроконтроллера – входом. Одновременно с передачей данных от ведущего к ведомому устройству проис- ходит приём данных ведущим устрой- ством от ведомого по кольцу. Таким образом, за один полный цикл сдви- га всех разрядов регистра происходит обмен данными между двумя устрой- ствами. Ведомые устройства не могут обмениваться данными друг с другом. Рассмотрим работу с SPI на примере микроконтроллеров AVR (микросхе- ма ATmega16) и STM32 (микросхема STM32F103C4 [1]), для чего воспользуем- ся программой компьютерного модели- рования электронных схем Proteus [2]. Передача данных через последовательный интерфейс SPI в микроконтроллерах Cortex-M3 в Proteus Для организации быстродействую- щей связи с интегральными схемами у микроконтроллеров STM32 Cortex-M3 имеется до трёх модулей SPI [3], предна- значенных для полнодуплексной пере- дачи данных на частоте до 18 МГц. Важ- но обратить внимание, что один модуль SPI подключён к высокоскоростной шине APB2, два других модуля связаны с более низкоскоростной шиной APB1. Выводымикроконтроллера, использу- емые модулями SPI, являются линиями ввода/вывода общегоназначения. Назна- чение выводам функции SPI осущест- вляется в регистрах настройки GPIO. Вмикроконтроллере STM32F103C4моду- лем SPI1используются линииPА4 –NSS, PА5 – SCK, PА6 –MISO, PA7 –MOSI. Одна- ко, используя регистрыAFIO, линии SPI1 можно перенести на выводы PA15, PB3, РВ4 и РВ5 соответственно. В модуле SPI имеются следующие регистры ввода/вывода, необходимые для работы интерфейса: ● SPI_DR – регистр данных, содержит посылаемые или принятые 8 или 16 бит данных; ● SPI_CR1, SPI_CR2 – регистры управ- ления, определяют функционирова- ние модуля SPI; ● SPI_SR – регистр состояния, отобра- жает состояние модуля SPI. Для обнаружения ошибок, возник- ших при приёме и передаче данных, используются регистры SPI_CRCPR, SPI_RXCRCR и SPI_TXCRCR. Включение/выключение SPI выпол- няется установкой шестого бита (SPE) регистра SPI_CR1, седьмой бит (LSBFIRST) задаёт порядок передачи данных, а второй бит (MSTR) этого регистра задаёт выбор режима рабо- Master Slave 1 Slave 2 … … Slave n SS1 SS2 SSn MOSI MISO SCK SS MOSI MISO SCK SS MOSI MISO SCK SS MOSI MISO SCK

RkJQdWJsaXNoZXIy MTQ4NjUy