Современная электроника №1/2022
ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 38 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2022 {while(!(SPI1->SR & SPI_SR_RXNE)) { } // ждём данные в буфере при- ёмника SPI if (SPI1->DR !=0b11111110) // если кодовая комбинация не получена GPIOB->ODR= (0<<0) ; // посылаем на линию РВ0 порта PB лог.0 else if (SPI1->DR==0b11111110) // если кодовая комбинация получена {while (1) // бесконечный цикл {GPIOB->ODR=(1<<0); // включить светодиод D2 delay(10); // задержка GPIOB->ODR=(0<<0); // погасить светодиод D2 delay(10); }}}} Код программыинициализации вво- дится на вкладке Source Code схемного редактора на отдельной закладке для каждогомикроконтроллера (см. рис. 15). Проанализируем работу демонстра- ционной схемы, представленной на рис. 14. На вкладке Source Code про- граммным путём были даны указания ведущему микроконтроллеру через интерфейс SPI1 отправить каждому ведомому микроконтроллеру кодовую комбинацию. Это действие выполня- ется последовательно. Сначала веду- щий микроконтроллер через линию PА0 своего порта PА подаёт на линию NSS (РА4) микросхемы DD2 логиче- скую единицу, а через линию PА1 на линию NSS (РА4) микросхемы DD3 логический ноль, что оповеща- ет первое ведомое устройство о том, что именно оно выбрано для обме- на данными с ведущим по интер- фейсу SPI, активизирует интерфейс SPI1 микросхемы DD2 и делает неак- тивным интерфейс SPI1 микросхе- мы DD3. После задержки ведущий микрокон- троллер через линию PА1 своего порта PА подаёт на линию NSS (РА4) микро- схемы DD3 логическую единицу, а через линию PА0 на линию NSS (РА4) микросхемыDD2 логический ноль, что активизирует интерфейс SPI1 микро- схемыDD3 и делает неактивным интер- фейс SPI1 микросхемы DD2. Если ведомое устройство выбра- но ведущим, то программа ведомого микроконтроллера выводит на линию РВ0 порта PВ логический ноль, в резуль- тате чего подключённый к порту све- тодиод будет погашен. Как только по интерфейсу SPI1 получена кодовая ком- бинация от ведущего микроконтролле- ра, запускается подпрограмма, дающая указания ведомому микроконтроллеру запустить цикл, в котором последова- тельно выводятся на линию порта PВ0 значения логической 1 и 0. Эти значе- ния удерживаются при помощи коман- ды задержки. После запуска моделирования при помощи двух светодиодов, подклю- чённых к линиям PВ0 порта PВ ведо- мых микроконтроллеров DD2 и DD3, мы можем проверить правильность Рис. 16. Осциллограмма работы светодиодов D1 и D2, подключённых к ведомым микроконтроллерам STM32F103C4 Рис. 15. Передача данных между тремя устройствами через интерфейс SPI. Вкладка Source Code, код программы инициализации: ведущего микроконтроллера (а), первого ведомого микроконтроллера (б), второго ведомого микроконтроллера (в) а в б
RkJQdWJsaXNoZXIy MTQ4NjUy