Добрый вечер
В силу разных причин мне нужно менять на ноге MOSI "0" и "1", и при этом видеть, что происходит на MISO
Соответственно, SCLK и NSS в этом не участвуют, они задействованы как GPIO
Первая грабля ударила по лбу, когда оказалось, что SPI определяет, что уже ктой-то "дернул" ногу NSS в "0" и сразу бит SPE сбрасывается и возводится MODF (fault)
Ну хорошо, выставил бит программного управления ногой NSS (бит SSM), теперь SPI engine не отключается
Поставил бит RXNEIE, пишу в регистр данных и жду, когда войду в прерывание по флагу непустой очереди RX... и могу ждать вечно, в регистре статуса RXNE не меняется
Что еще посмотреть?
Вот ведь зараза
В общем так... SPI engine у STM32F0 тактируется от пина, а не внутри. В результате - если нет "дергания" пина (не настроен как альтернативная функция SCK) - нет и работы SPI
NXP такие штуки позволяла делать (по крайней мере с ARM7), тактируясь внутри кристалла, а что побудило пойти ST таким путем - загадка