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

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 39 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 9 2021 Рис. 2. Демонстрационная схема с использованием двух микроконтроллеров STM32F103C4 и светодиодов Рис. 3. Настройка частоты работы микроконтроллера DD1 ты интерфейса. При чтении регистра SPI_DR выполняется обращение к буферному регистру приёмника, при записи – к буферному регистру пере- датчика. Для передачи данных их необ- ходимо записать в регистр передат- чика. Принятые данные читаются из регистра приёмника. Для программы существует один регистр с именем SPI_ DR. Скорость обмена по SPI определя- ет блок генератора скорости, который задаёт частоту следования тактовых импульсов. Для этого предназначены разряды BR0, BR1 и BR2 регистра SPI_ CR1. Три разряда предполагают нали- чие восьми значений скорости. При написании программы инициа- лизации микроконтроллера для пере- дачи данных через интерфейс SPI их записывают в регистр SPI_DR с помо- щью команды SPIy->DR = data_tx, где y – это номер интерфейса SPI. Окон- чание передачи контролируется про- веркой флага TXE регистра SPI_SR, для чего можно использовать коман- ду while (!(SPIy->SR & SPI_SR_TXE)) { }. Одновременно с передачей происходит приём данных в регистр SPI_DR. При- нятые данные считываются из регистра данных с помощью команды data_rx = SPIy->DR. Для проверки работоспособ- ности интерфейса SPI в режиме масте- ра достаточно соединить выводыMISO и MOSI между собой и сравнить пере- данные данные с полученными. Если они совпадают, это значит, что интер- фейс работает правильно. Управляя значениями битов реги- стров модуля SPI микроконтроллеров Cortex-M3, реализуют процесс обме- на данными. Регистр данных SPI_DR состоит из 16 разрядов данных. В этот регистр данные записываются для пере- дачи и читаются из него при приёме. В одноранговой шине SPI (где имеет- ся только одно ведущее и одно ведомое устройство) сигнал SS может быть опу- щен, а соответствующий вывод ведомо- го устройства подключён к земле. Передача данных через интерфейс SPI между двумя микроконтроллерами Cortex-M3 Рассмотрим процесс передачи дан- ных между двумя микроконтроллера- ми Cortex-M3 на примере микросхе- мы STM32F103C4, для чего создадим в Proteus новый схемный проект и добавим в рабочее поле на вкладке Schematic Capture две микросхемы STM32F103C4, два светодиода, два резистора (100 Ом), символ земли. Соединим компоненты так, как пока- зано на рис. 2, и напишем на языке программирования С программный код управления передачей данных. В микроконтроллере STM32F103C4 имеется только один модуль SPI, к реги- страм которого в Proteus в программе инициализации обращаются с указа- нием номера интерфейса (например, по имени SPI1_SR, SPI1_DR). Обраще- ние без указания номера интерфейса (по имени SPI_SR, SPI_DR) при ком- пиляции кода программы вызывает ошибку. Необходимо отметить, что программа инициализации пишет- ся как для ведущего, так и для ведо- мого микроконтроллера. Определим микроконтроллер DD1 как ведущий, а микроконтроллер DD2 как ведо- мый. При этом задачей мастера будет послать управляющий сигнал (кодо- вую комбинацию), задачей ведомого устройства – принять его и последо- вательно включить и выключить оба светодиода. Перед передачей и приёмом дан- ных необходимо сформировать сиг- налы выбора для того устройства, с которым будет производиться обмен. Если ведомое устройство одно, то мож- но использовать сигнал выбора NSS. Если же ведомых устройств несколько, то придётся для каждого из них форми- ровать индивидуальный сигнал выбо- ра. В качестве источников таких сигна- лов могут выступать свободные выводы портов GPIO. Для удобства соединения можно отразить в рабочей области микро- схему DD1, для чего выделим её левой кнопкой мыши, правой кнопкой мыши вызовем контекстное меню и выберем в нём пункт X-Mirror. В результате микро- схема будет отражена по горизонтали в рабочем поле проекта. В таком поло- жении выводы PA4 (NSS), PA5 (SCK), PA6 (MISO), PA7 (MOSI) обеих микросхем соединить намного проще, при этом соединительные линии на схеме будут короче. Для каждого микроконтроллера двойнымщелчком левой кнопки мыши откроем окно настроек Edit Component и в поле Crystal Frequency установим частоту работы 2 МГц (см. рис. 3). Кноп- кой Hidden Pins для каждого микрокон- троллера откроем окно Edit Hidden Power Pins, где выполним согласова- ние скрытых выводов питания и цепей питания (см. рис. 4). В нашем приме- ре в полях Pin VDD и Pin VDDA введём значение VDD, а в полях Pin VSS и Pin VSSA – значение VSS. Нажмём кнопку ОК для вступления в силу внесённых изменений.

RkJQdWJsaXNoZXIy MTQ4NjUy