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

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 42 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 9 2021 ведомому микроконтроллеру вывести на линии PВ0 и PВ1 порта РВ значе- ния логической 1 и 0 соответственно, которые удерживаются на этих линиях при помощи команды задержки. Затем на линии PВ0 и PВ1 выводятся значе- ния логического 0 и 1 соответствен- но, после чего по истечении времени задержки выполнение этого фрагмен- та программы повторяется. После запу- ска моделирования при помощи двух светодиодов, подключённых к лини- ям PВ0 и PВ1, мы можем проверить правильность работы программы – светодиоды подсвечиваются и гаснут поочередно. Передача инициируется записью передаваемых данных (в 8- или 16-бит- ном формате) в буферный регистр передатчика, т.е. в регистр данных SPI_ DR. После чего автоматически сбра- сывается первый бит регистра SPI_ SR (TXE = 0), что говорит о том, что буфер передатчика уже не пуст. При этом устанавливается в 1 и седьмой бит регистра SPI_SR (BSY = 1), что озна- чает, что интерфейс занят. После это- го данные пересылаются из регистра SPI_DR в сдвиговый регистр передат- чика. Передача данных осуществляет- ся посредством линий MOSI и MISO. Сдвиговые регистры ведущего и ведо- мого устройства объединяются линия- ми связи в единый сдвиговый регистр. Процессом передачи данных управля- ет ведущее устройство, формируя так- товые импульсы через линию SCK. Одновременно с передачей данных от ведущего к ведомому устройству проис- ходит приём данных ведущим устрой- ством от ведомого по кольцу. Таким образом, за один полный цикл сдви- га всех разрядов регистра происходит обмен данными между двумя устрой- ствами. При написании программно- го кода необходимо указывать номер модуля, к которому мы обращаемся. В нашем примере это SPI1. Рассмотрим ещё один пример, где ведущий микроконтроллер пересы- лает через интерфейс SPI1 комбина- цию символов английского алфавита ведомому микроконтроллеру, который выводит принятые данные через интер- фейс USART [4] на экран виртуального терминала. Для чего создадим в Proteus новый схемный проект, добавим в рабочее поле на вкладке Schematic Capture две микросхемы STM32F103C4 и соединим их так, как показано на рис. 8. Щёлкнув левой кнопкой мыши на панели INSTRUMENTS (см. рис. 9) строку с названием VIRTUAL TERMINAL, а затем строку OSCILLOSCOPE, разме- стим мышью в рабочем поле проекта виртуальный терминал и виртуальный осциллограф, которым воспользуемся для просмотра осциллограммы рабо- ты SPI. Подсоединим вывод РА9 (TXD) микроконтроллера DD2 к выводу RXD виртуального терминала, а выводы РА5 (SCK) и РА7 (MOSI) – к каналам А и В осциллографа. В окне настроек Edit Component в поле Crystal Frequency для каждого микроконтроллера установим часто- ту его работы 2 МГц. Кнопкой Hidden Pins откроем окно Edit Hidden Power Pins, где выполним согласование скры- тых выводов питания и цепей питания. В окне настроек терминала (см. рис. 10) определим значения следующих пара- метров: ● Baud Rate – скорость обмена данны- ми (9600 бод); ● Data Bits – формат пакета данных (8 бит); ● Parity – контроль чётности (отсут- ствует – NONE); ● Stop Bits – количество стоповых би- тов (1). Окна настроек открывают двойным щелчком левой кнопки мыши по разме- щённому на схеме компоненту. Напишем на языке программирова- ния С для ведущего (DD1) и для ведо- Рис. 8. Демонстрационная схема с использованием двух микроконтроллеров STM32F103C4, виртуального терминала и осциллографа Рис. 9. Открытие панели INSTRUMENTS с помощью пиктограммы Virtual Instruments Mode

RkJQdWJsaXNoZXIy MTQ4NjUy