Современная электроника №1/2022
ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 36 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2022 Работа с последовательным интерфейсом SPI в программной среде Proteus 8.11. Часть 2 Рис. 14. Моделирование передачи данных между тремя микроконтроллерами STM32F103C4 через интерфейс SPI в программной среде Proteus В статье рассматривается проектирование схем микроэлектронных устройств с использованием интерфейса SPI в Proteus на примере его реализации в микроконтроллерах AVR (семейства Mega) и STM32 (семейства Cortex-M3). Описаны особенности написания программного кода для инициализации интерфейса и работы с ним, а также моделирования схем, в которых проводится передача данных через SPI между двумя и тремя устройствами, сконфигурированными как master и slave. Выполнено отображение принятых ведомым устройством данных на экране виртуального терминала. С помощью осциллографа проведён контроль входных/выходных сигналов, присутствующих на выводах устройств схемы. Татьяна Колесникова (beluikluk@gmail.com) Передача данных через интерфейс SPI между тремя микроконтроллерами Cortex-M3 Рассмотрим процесс передачи данных через интерфейс SPI меж- ду несколькими микроконтроллера- ми Cortex-M3 на примере микросхем STM32F103C4, для чего создадим в Proteus новый схемный проект и доба- вим в рабочее поле три таких микро- схемы, два светодиода, два резистора (100 Ом), два символа «земли». При этом микросхема DD1 будет выпол- нять роль ведущего микроконтролле- ра, а микросхемы DD2 и DD3 – роль ведомых. Соединим компоненты, как показано на рис. 14, и напишем на язы- ке программирования С программный код управления передачей данных. Необходимо отметить, что програм- ма инициализации пишется как для ведущего, так и для обоих ведомых микроконтроллеров. Задачей мастера будет послать управляющий сигнал (кодовую ком- бинацию) сначала первому ведомому устройству, а затем второму. Переклю- чение между ведомыми устройствами выполняется путём установки веду- щим микроконтроллером логической единицы на линии NSS (РА4) ведомых микроконтроллеров. При этом при передаче данных по интерфейсу SPI1 между тремя микроконтроллерами в нашем примере этот сигнал выдаёт- ся на линии PА0, PА1 порта PА ведуще- го микроконтроллера. Задача каждого ведомого устройства – принять кодо- вую комбинацию, после чего запустить цикл, в котором выполняется последо- вательное включение и выключение светодиода. Для удобства соединения в рабочей области проекта отразим по горизон- тали микросхему DD1. В окне настро- ек Edit Component для каждого микро- контроллера в поле Crystal Frequency установим частоту работы 2 МГц. Кноп- кой Hidden Pins для каждого микрокон- троллера откроем окно Edit Hidden Power Pins, где выполним согласова- ние скрытых выводов питания и цепей питания. Напишем на языке программирова- ния С следующий код программы ини- циализации для ведущего микрокон- троллера DD1: #include <stm32f1xx.h> // подклю- чение заголовочного файла void delay (int dly) // подпро- грамма формирования задержки { int i; for(; dly>0; dly--) for ( i=0; i<10000; i++); } int main() // начало программы { RCC->APB2ENR |= RCC_APB2ENR_ SPI1EN; // включаем тактирование SPI1
RkJQdWJsaXNoZXIy MTQ4NjUy