Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F407 SPI Slave
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
CosworthRS
Доброго времени суток.

Пытаюсь настроить STM'ку в режиме slave. Если точнее - хочу сделать сдвиговый регистр, чтобы формировать последовательность по внешнему клоку, но суть не в этом. Не хочет работать в режиме Slave совсем. Код такой:
Код
palSetPadMode(GPIOB, 4, PAL_MODE_ALTERNATE(5)); // MISO
palSetPadMode(GPIOB, 3, PAL_MODE_ALTERNATE(5)); // MOSI (Unused)
palSetPadMode(GPIOB, 5, PAL_MODE_ALTERNATE(5)); // SCK

rccEnableSPI1(FALSE);
SPI1->CR1 = 0;
SPI1->CR1 = SPI_CR1_SSM | SPI_CR1_SPE;

while (true) {
        if(SPI1->SR & SPI_SR_TXE) {
            SPI1->DR = 0xAA;
        }


После первой записи в DR, TXE=0 всегда. На MISO ничего не появляется вообще. Клок на SCK (1 Мгц) выдаю с таймера. Если я правильно понимаю, то установка SSM=1 SSI=0, эквивалентна подключению NSS->0, казалось бы должно работать... В режиме мастер все ок. Куда копать?
AlanDrakes
В режиме ведомого лучше использовать бит SPI_SR_RXNE, т.к. он отвечает за приём данных.
Опять же, надеюсь, затактировали порты и собственно сам SPI модуль?
Так же обновите строку:
SPI1->CR1 = SPI_CR1_SSM | SPI_CR1_SPE | SPI_SC1_SSI;
Bit 8 SSI: Internal slave select
Возможно, причина окажется в этом.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.