STM32 SPI

Aug 21, 2014 23:46

Очередные грабли обнаружились в STM32(F3). Суть заключается в том, что модуль SPI по-видимому использует для приема данных сигнал CLK непосредственно с ножки, даже если он сам его генерирует в режиме мастера. Казалось бы, какая разница, но это порождает ряд эффектов, которые главным образом проявляются при мощных ВЧ помехах на линии клока. SPI защелкивает данные не по тем клокам которые он генерирует, а по тем клокам, которые приходят снаружи. Как результат - данные могут приехать раньше чем закончится прием/передача. Может статься даже так, что отправив/приняв(SPI у нас полнодуплесный) один байт мы получим два. Но больше всего меня удивило, что даже при выключенном SPI (CR1=0 и как следствие бит SPE=0) он принимает байты и выставляет флаг прерывания RXNE.

P.S. Как генератор мощных ВЧ помех в домашних условиях без спец оборудования очень хорошо подошла обычная рация (при выборе диапазона 136-174 МГц). Наводки она дает будь здоров, а несущую можно смотреть даже на простом осциллографе 50 МГц (пропатченным до 100). Кстати, просто как забавный факт - собственно пропатченный RIGOL DS1052E видит наводящуюся на щупы несущую вплоть до 174.000 МГц, а измеряемая им частота с точностью до 0.001 МГц совпадает с выставленной на рации (еще вопрос кто врет :)).

Микроконтроллеры, Программирование, Электроника, Грабли

Previous post Next post
Up