Современная электроника №9/2021
ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 43 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 9 2021 Рис. 10. Окно настроек виртуального терминала Рис. 12. Передача данных между двумя устройствами через интерфейс SPI. Вкладка Source Code, код программы инициализации: ведущего (а) и ведомого (б) микроконтроллера Рис. 11. Приём ведомым микроконтроллером через интерфейс SPI данных и их вывод на экран виртуального терминала через интерфейс USART мого (DD2) микроконтроллеров про- граммный код управления передачей данных. Для получения осциллограм- мы работы интерфейса SPI настроим параметры осциллографа так, как пока- зано на рис. 11. Код программы инициализации для ведущего микроконтроллера (см. рис. 12а): #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 // подсоединение линий порта РА к шине APB2 RCC->APB2ENR |= RCC_APB2ENR_ IOPAEN; // настройка линий РА5 (SCK), PA6 (MISO), PA7 (MOSI) порта РА // биты CNF5, CNF7 = 10, биты MODE5, MODE7 = 11 // биты CNF6 = 10, биты MODE6 = 00 GPIOA->CRL = 0xb8b33333; // конфигурация SPI1 SPI1->CR1 = (0<<11) // формат кадра данных 8 бит | (0<<7) // направление передачи младшим разрядом вперед | (1<<9) // включаем программное управление сигналом NSS | (1<<8) // NSS в высоком состо- янии | (1<<5)|(0<<4)|(0<<3) // ско- рость передачи данных: F_PCLK/32 | (1<<2) // режим работы Master (ведущий) | (0<<1)|(0<<0) // полярность (0) и фаза тактового сигнала (0) | (1<<6); // включаем SPI // после установки в 1 флага TXE регистра SPI1_SR while(!(SPI1->SR & SPI_SR_TXE)) { } //заполняем буфер передатчика SPI1->DR = ‘s’; delay(10); SPI1->DR = ‘l’; delay(10); SPI1->DR = ‘o’; delay(10); а б
RkJQdWJsaXNoZXIy MTQ4NjUy