_lexa_ 0 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба Всем доброго времени суток! В настоящем случае по SPI3 (через DMA) принимаются данные от АЦП. Когда включаю независимый вочдог, получаю странное искажение сигнала Скачки порядка 1000-1500 е.м.р. Код настройки и пуска вочдога: IWDG->KR = 0x0000CCCCu; IWDG->KR = 0x00005555u; IWDG->PR = 2; IWDG->RLR = 1; while(IWDG->SR); IWDG->KR = 0x0000AAAAu; При этом частота и величина скачков не зависит от от настройки регистров PR и RLR. Без IWDG все нормально работает. Кроме того, настраиваю (например) вочдог на частоту сброса 1 мс. Перезагрузку его счетчика в программе произвожу с частотой 15-30 мкс. Однако при запуске программы контроллер сбрасывается, т.е. программа не успевает перезагрузить счетчик вочдога С WWDG при этом все работает как надо Может кто сталкивался с этим? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба Едва ли IWDG может избирательно влиять исключительно на младшие биты принимаемых по SPI данных. Скорее, на ваш источник пролезает какая-то наводка от его RC-генератора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 66 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба Может кто сталкивался с этим? Подайте на АЦП постоянное напряжение, посмотрите на сколько разрядов шумит и насколько стабильно. Возможно где-то переполнение буфера или неправильные адреса. Или конденсатор по какому-то выводу питания не стоит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_lexa_ 0 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба Едва ли IWDG может избирательно влиять исключительно на младшие биты принимаемых по SPI данных. Скорее, на ваш источник пролезает какая-то наводка от его RC-генератора. Я включал LSI генератор отдельно, без вочдога - сигнал был чистый. Подайте на АЦП постоянное напряжение, посмотрите на сколько разрядов шумит и насколько стабильно. Возможно где-то переполнение буфера или неправильные адреса. Или конденсатор по какому-то выводу питания не стоит. Судя по картинке на участках с минимальной производной (считаем там напряжение постоянным) выбросов нет и с уменьшением производной сигнала выбросы уменьшаются. Если увеличить картинку, складывается впечатление, что выбросы - это просто старые значения. По уровню они вроде как совпадают (разрешение картинки не очень, эксперимент пока повторить не могу). Здесь буду думать в этом направлении. Но опять не понятно почему настройки вочдога не совпадают с его реальной работой. Как будто тактирование идет частотой, пожалуй, раз в 300 большей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба A что у нас с кэшем данных? Инввлидация перед чтением по DMA делается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 11 июня, 2018 Опубликовано 11 июня, 2018 · Жалоба Если увеличить картинку, складывается впечатление, что выбросы - это просто старые значения. По уровню они вроде как совпадают (разрешение картинки не очень, эксперимент пока повторить не могу). Здесь буду думать в этом направлении. Как бы хорошим тоном является при работе связки DMA+некая_периферия контролировать случаи переполнения FIFO SPI и DMA. Выставить ловушки на такие события. Это предохраняет от многих "чудес". Да и бряк на точку старта программы бы поставить: а то может у вас этот WDT срабатывает периодически и программа перезапускается. :biggrin: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_lexa_ 0 18 июня, 2018 Опубликовано 18 июня, 2018 · Жалоба A что у нас с кэшем данных? Инввлидация перед чтением по DMA делается? В моем случае данные расположены в DTCM RAM. Кэш не участвует в процессе Как бы хорошим тоном является при работе связки DMA+некая_периферия контролировать случаи переполнения FIFO SPI и DMA. Выставить ловушки на такие события. Это предохраняет от многих "чудес". Да и бряк на точку старта программы бы поставить: а то может у вас этот WDT срабатывает периодически и программа перезапускается. :biggrin: Вопрос почему без IWDG все нормально работает, а также с WWDG нормально работает остается открытым. Если бы FIFO SPI или DMA переполнялся - это было бы как с IWDG, так и без него. На счет рестарта - тоже маловероятно. в начале программы идет довольно длительная инициализация переферии (порядка 1 с) периодического сигнала мы бы не увидели. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 19 июня, 2018 Опубликовано 19 июня, 2018 · Жалоба Конец оцифровки делается по прерыванию от DMA по TC или от ADC? Первый вариант мне кажется более правильными. Использовать двойной буфер - и точно использовать данные из не учавствующей в обмене части. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться