Easyelectronics.ru

Электроника для всех
Текущее время: 23 сен 2020, 14:43

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 02 июн 2020, 19:50 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
Добрый день. Сижу тут уже плачу практически((

Есть прошивка для STM32F407IE. Там с внешнего АЦП читаются данные по SPI по 8kSps (по прерыванию EXIT data ready с ноги АЦП на МК), складываются в буфер и отправляются по USART с частотой 64Гц (то бишь 124-125 пачек данных за один цикл в пакет собирается, данные 3х байтовые, т.е. 3000 байт в пакете всего+4 байта допинфы).

Два месяца назад всё было ок, приходило 124-125 пакетов, потом плата была отложена. Через два месяца та же прошивка начала собирать рандомное количество данных в пакет, от 90 до 115 где-то пачек на пакет вместо 124-125 стабильных без видимой закономерности. Причем, кажется по анализатору, что data ready выставляется, а прерывание просто перестает срабатывать на какое-то время (прерывания отправки по USART в этот момент еще нет, и никаких других тоже, ничто не должно мешать).

Более того! Сегодня всё стало еще хуже! При дебаге всё работает, данные отправляются и приходят в терминал, с breakpointами и без останова, часы заводятся внешние без ошибок, с питанием точно всё ок. Данных всё еще неверное количество, но они хотя бы есть.
Но! если отключить плату от программатора и переподключить, сама по себе она перестает работать, сигналов нет ни на SPI, ни на USART никаких. Причем периодически при подключении платы к терминалу начинает вылезать ошибка на рисуночке прикрепленном.

Когда это ошибки нет, порт открывается, но данные не идут и сигналов нигде нет.
Подскажите пожалуйста, в чем может быть причина?


Вложения:
Безымянный.png
Безымянный.png [ 5.32 Кб | Просмотров: 560 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 02 июн 2020, 19:56 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1554
1) Код покажите.
2) Как питается устройство ?
Может у вас там синусоида по питанию с размахом в логическую еденицу на частоте в сотни килогерц из за отсутствия нормального кондера, или стабилизатор "завелся" на частоте в десятки килогерц.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 02 июн 2020, 20:07 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
sed_alex писал(а):
1) Код покажите.

Show
sed_alex писал(а):
2) Как питается устройство ?
Может у вас там синусоида по питанию с размахом в логическую еденицу на частоте в сотни килогерц из за отсутствия нормального кондера, или стабилизатор "завелся" на частоте в десятки килогерц.
Не, с питанием всё ок, стабилизаторы на 3В и 5В, шумы по питанию не больше 20мВ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 02 июн 2020, 21:24 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1554
Надеюсь это ошибка в коментариях:
Код:
ADS129x_CS_ON();//   GPIOC->BSRR = GPIO_BSRR_BR9;
   UsSPI1_Exchange(ADS129x_SDATAC);
   HAL_Delay(1);
   ADS129x_CS_OFF();//GPIOC->BSRR = GPIO_BSRR_BS9;

Должно быть:

Код:
для ADS129x_CS_ON();// 
GPIOC->BSRR |= GPIO_BSRR_BR9;
для  ADS129x_CS_OFF();
GPIOC->BSRR |= GPIO_BSRR_BS9;


Сейчас сюда спецы заглянут по 4xx камням может, что то еще подскажут (я с ними не работаю)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 02 июн 2020, 21:32 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6946
Попробуйте перед "HAL_Init();" поставить бАААльшую тупую задержку на 0.5-2 сек, простой цикл, и посмотрите на результат.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 12:50 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
u37 писал(а):
Попробуйте перед "HAL_Init();" поставить бАААльшую тупую задержку на 0.5-2 сек, простой цикл, и посмотрите на результат.

эээ...ну как бы по отладчику он отрабатывает эту задержку и идет дальше, всё шлет, как и раньше. Без отладчика так же молчит. Никакой разницы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 13:23 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5883
Галка на Reset and Run, на вкладке Flash download в опциях дебаггера, поставлена ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 14:02 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
dosikus_2 писал(а):
Галка на Reset and Run, на вкладке Flash download в опциях дебаггера, поставлена ?

Не нашла нигде в настройках дебаггера Flash download. У меня workbench.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 14:07 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5883
ouch писал(а):
У меня workbench.


Iar что ли?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 14:09 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
dosikus_2 писал(а):
ouch писал(а):
У меня workbench.


Iar что ли?

eclipse


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 14:28 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5883
ССЗБ


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 14:32 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3558
Откуда: Китай, Пекин
проверь и сделай общие доступные глобальные переменные (которые доступаются из разных мест кода) volatile

попробуй отключить все оптимизации при компиляции

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 14:33 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
dosikus_2 писал(а):
ССЗБ

Спасибо)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 14:38 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
cheblin писал(а):
проверь и сделай общие доступные глобальные переменные (которые доступаются из разных мест кода) volatile
попробуй отключить все оптимизации при компиляции

ни то, ни другое не помогло.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 14:55 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 3558
Откуда: Китай, Пекин
сделай тотально всё volatile

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 19:26 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
cheblin писал(а):
сделай тотально всё volatile

Не, не помогает.
В общем, работать стало и без дебага, если отправлять в два раза меньше данных.

Но в SPI всё еще криво работает. Должно быть, как я это понимаю:
Код:
   ADS129x_CS_ON();
   while (!(SPI1->SR & SPI_SR_TXE))
   SPI1->DR=_data;
   while (!(SPI1->SR & SPI_SR_RXNE))
   ADS129x_CS_OFF();
   return SPI1->DR;

А по факту - зависает в проверке RXNE и работает только вот так:
Код:
   ADS129x_CS_ON();
   while (!(SPI1->SR & SPI_SR_TXE))
   HAL_SPI_Transmit(&hspi1,&_data,1,100);
   ADS129x_CS_OFF();
   return SPI1->DR;

Почему?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 19:34 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1266
ouch писал(а):
Код:
while (!(SPI1->SR & SPI_SR_TXE)) {}
SPI1->DR=_data;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 19:36 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
Reflector писал(а):
ouch писал(а):
Код:
while (!(SPI1->SR & SPI_SR_TXE)) {}
SPI1->DR=_data;

Ага, только что пробовала - безрезультатно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 19:37 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1266
ouch писал(а):
безрезультатно.

Надеюсь пробовала менять в двух местах, а не одном?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 19:38 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
Сейчас будет максимально позорный детский вопрос))) : возможно ли, что случилось что-то глобально плохое с прерываниями? Почему могут не выставляться флаги? Не только SPIные, но и другие? Если что-то такое возможно, то какой раздел мануала читать? и что искать?


Последний раз редактировалось ouch 03 июн 2020, 19:46, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 19:38 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
Reflector писал(а):
ouch писал(а):
безрезультатно.

Надеюсь пробовала менять в двух местах, а не одном?

само собой


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 19:55 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1554
Ну если виснет на приеме то это как то странно, оно по определению байт туда байт оттуда (если у вас 8 битный режим правильно настроен)
Не знаю как там хал длинну посылки настраивает если у вас SPI 8 битный попробуйте дефайном прописать следующее:

Код:
#define SPI1_DR_8bit          *((__IO uint8_t *)&SPI1->DR)



Соответственно обращение будет иметь приблизительно такой вид:

Код:
CS_LO();
while (!(SPI1->SR & SPI_SR_TXE)){}; SPI1_DR_8bit = Byte;
while ((SPI1->SR & SPI_SR_BSY)){};   
while (!(SPI1->SR & SPI_SR_RXNE)){}; Byte = SPI1_DR_8bit;//SPI1->DR;
CS_HI();
return Byte;


Еще один момент скорость шин больше 2МГц ?
Тогда в регистре GPIOx->OSPEEDR выводы MOSI, MISO, SCK должны быть переведены в High Speed

Пример:
Код:
GPIOA->OSPEEDR    |= GPIO_OSPEEDER_OSPEEDR4 |GPIO_OSPEEDER_OSPEEDR5 \
            | GPIO_OSPEEDER_OSPEEDR6 | GPIO_OSPEEDER_OSPEEDR7;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 20:04 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
sed_alex писал(а):
Ну если виснет на приеме то это как то странно, оно по определению байт туда байт оттуда (если у вас 8 битный режим правильно настроен)
Не знаю как там хал длинну посылки настраивает если у вас SPI 8 битный попробуйте дефайном прописать следующее:
Код:
#define SPI1_DR_8bit          *((__IO uint8_t *)&SPI1->DR)

Соответственно обращение будет иметь приблизительно такой вид:
Код:
CS_LO();
while (!(SPI1->SR & SPI_SR_TXE)){}; SPI1_DR_8bit = Byte;
while ((SPI1->SR & SPI_SR_BSY)){};   
while (!(SPI1->SR & SPI_SR_RXNE)){}; Byte = SPI1_DR_8bit;//SPI1->DR;
CS_HI();
return Byte;


Благополучно преодолел BUSY и завис на RXNE.
sed_alex писал(а):
Еще один момент скорость шин больше 2МГц ?
Тогда в регистре GPIOx->OSPEEDR выводы MOSI, MISO, SCK должны быть переведены в High Speed
Больше, соблюдено.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 03 июн 2020, 20:05 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1266
sed_alex писал(а):
Не знаю как там хал длинну посылки настраивает если у вас SPI 8 битный попробуйте дефайном прописать следующее:

Код:
#define SPI1_DR_8bit          *((__IO uint8_t *)&SPI1->DR)

Для F4 это не нужно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407IE работает только в дебаге! Как так?!
СообщениеДобавлено: 04 июн 2020, 13:17 
Заглядывает иногда

Зарегистрирован: 04 июл 2019, 18:21
Сообщения: 45
dosikus_2 писал(а):
ССЗБ

А если пользовать Keil?)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB