реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> IWDG на stm32f746, Не понятное влияние IWDG на работу SPI3
_lexa_
сообщение Jun 10 2018, 06:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 23-03-15
Пользователь №: 85 852



Всем доброго времени суток!

В настоящем случае по 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 при этом все работает как надо

Может кто сталкивался с этим?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 10 2018, 07:12
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 660
Регистрация: 11-12-04
Пользователь №: 1 448



Едва ли IWDG может избирательно влиять исключительно на младшие биты принимаемых по SPI данных. Скорее, на ваш источник пролезает какая-то наводка от его RC-генератора.
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Jun 10 2018, 09:06
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 162
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(_lexa_ @ Jun 10 2018, 13:22) *
Может кто сталкивался с этим?

Подайте на АЦП постоянное напряжение, посмотрите на сколько разрядов шумит и насколько стабильно.
Возможно где-то переполнение буфера или неправильные адреса.
Или конденсатор по какому-то выводу питания не стоит.
Go to the top of the page
 
+Quote Post
_lexa_
сообщение Jun 10 2018, 12:29
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 23-03-15
Пользователь №: 85 852



Цитата(aaarrr @ Jun 10 2018, 08:12) *
Едва ли IWDG может избирательно влиять исключительно на младшие биты принимаемых по SPI данных. Скорее, на ваш источник пролезает какая-то наводка от его RC-генератора.

Я включал LSI генератор отдельно, без вочдога - сигнал был чистый.

Цитата(HardEgor @ Jun 10 2018, 10:06) *
Подайте на АЦП постоянное напряжение, посмотрите на сколько разрядов шумит и насколько стабильно.
Возможно где-то переполнение буфера или неправильные адреса.
Или конденсатор по какому-то выводу питания не стоит.


Судя по картинке на участках с минимальной производной (считаем там напряжение постоянным) выбросов нет и с уменьшением производной сигнала выбросы уменьшаются.

Если увеличить картинку, складывается впечатление, что выбросы - это просто старые значения. По уровню они вроде как совпадают (разрешение картинки не очень, эксперимент пока повторить не могу). Здесь буду думать в этом направлении.

Но опять не понятно почему настройки вочдога не совпадают с его реальной работой. Как будто тактирование идет частотой, пожалуй, раз в 300 большей.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jun 10 2018, 16:38
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 594
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



A что у нас с кэшем данных? Инввлидация перед чтением по DMA делается?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 11 2018, 05:45
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 997
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(_lexa_ @ Jun 10 2018, 15:29) *
Если увеличить картинку, складывается впечатление, что выбросы - это просто старые значения. По уровню они вроде как совпадают (разрешение картинки не очень, эксперимент пока повторить не могу). Здесь буду думать в этом направлении.

Как бы хорошим тоном является при работе связки DMA+некая_периферия контролировать случаи переполнения FIFO SPI и DMA. Выставить ловушки на такие события. Это предохраняет от многих "чудес".
Да и бряк на точку старта программы бы поставить: а то может у вас этот WDT срабатывает периодически и программа перезапускается. biggrin.gif
Go to the top of the page
 
+Quote Post
_lexa_
сообщение Jun 18 2018, 20:39
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 23-03-15
Пользователь №: 85 852



Цитата(Genadi Zawidowski @ Jun 10 2018, 16:38) *
A что у нас с кэшем данных? Инввлидация перед чтением по DMA делается?

В моем случае данные расположены в DTCM RAM. Кэш не участвует в процессе

Цитата(jcxz @ Jun 11 2018, 05:45) *
Как бы хорошим тоном является при работе связки DMA+некая_периферия контролировать случаи переполнения FIFO SPI и DMA. Выставить ловушки на такие события. Это предохраняет от многих "чудес".
Да и бряк на точку старта программы бы поставить: а то может у вас этот WDT срабатывает периодически и программа перезапускается. biggrin.gif

Вопрос почему без IWDG все нормально работает, а также с WWDG нормально работает остается открытым. Если бы FIFO SPI или DMA переполнялся - это было бы как с IWDG, так и без него. На счет рестарта - тоже маловероятно. в начале программы идет довольно длительная инициализация переферии (порядка 1 с) периодического сигнала мы бы не увидели.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jun 19 2018, 07:52
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 594
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Конец оцифровки делается по прерыванию от DMA по TC или от ADC? Первый вариант мне кажется более правильными. Использовать двойной буфер - и точно использовать данные из не учавствующей в обмене части.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2018 - 23:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.00873 секунд с 7
ELECTRONIX ©2004-2016