Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Nucleo-STM32f413zh. Демоны

Пт мар 19, 2021 18:21:15

Добрый день.
Две недели бьюсь над платой. А сегодня начал прицеливаться головой АП стенку.
Словом, такая беда:

Постановка задачи:
Программа со стороны компа, по CDC VCP шлет управляющий символ в плату. Она, по принятию символа должна передать уровень напряжения на 8 каналах АЦП. Словом, задача достойная Эйнштейна, Ферми итп :))

Делаю проект в Cube32MX, далее Keil.
До бесконечного цикла

В цикле


И тут началось! Ноги АЦП висят в "воздухе", физическое напряжение на них около 0.01В, а результаты получаю:
(1195,1131,1143,1136,1104,1083,1035,986) Это в АЦПшных попугаях.

Плюс ко всему этому функция sprintf наглухо отказывается корректно работать с float. Только с целыми.

Господа, кто сталкивался с подобным, и в какую сторону мне ковырять даташиты? Моск расплавлен, на Вас уповах)

main в аттаче
Вложения
main.c
(15.01 KiB) Скачиваний: 164

Re: Nucleo-STM32f413zh. Демоны

Пт мар 19, 2021 20:03:37

Хм, а у тебя включена поддержка float в библиотеке? В настройках проекта нужно указать, какой вариант *printf использовать. Это раз.

Без показа настроек АЦП тебе никто и ничего не подскажет. Это два.

Re: Nucleo-STM32f413zh. Демоны

Пт мар 19, 2021 20:09:39

Как же оно может работать если там такое :)
Код:
HAL_ADC_Start_DMA(&hadc1,(uint32_t*) &adcData,8);   

HAL_ADC_Stop_DMA(&hadc1);

Re: Nucleo-STM32f413zh. Демоны

Пт мар 19, 2021 20:15:23

Как же оно может работать если там такое :)
Код:
HAL_ADC_Start_DMA(&hadc1,(uint32_t*) &adcData,8);   

HAL_ADC_Stop_DMA(&hadc1);


Это я уже бесился. В начальном варианте StopDMA отсутствовал, а StartDma до бесконечного цикла включал. Не работало.

Re: Nucleo-STM32f413zh. Демоны

Пт мар 19, 2021 21:42:26

..Ноги АЦП висят в "воздухе"...
прям слух режет, здравый смысл здесь есть? космические голоса оцифровываете?
нужно подавать напряжение, причем током достаточныым для нормального режима измерительного конденсатора - не шибком грамотно, но как то так.
или хотя бы на 0 замкните.

Re: Nucleo-STM32f413zh. Демоны

Чт мар 25, 2021 14:49:43

Всем спасибо, учел предложения. Все, что имеет тип float депортировано, на 1 ноге 3.3В, на 2 (и остальных)- GND.
Результат: 1я нога измеряет, 2я (и остальные) нет.
Показания с терминала:
1520
1347
1264
4091 - 1я нога +Vcc
2751 - 2я нога GND
2134
1807
1535

Что не так в настройках?
И почему результаты преобразования 1го канала АЦП ПДП сует в элемент массива №4? Я полагаю, это вопрос синхронизации?
Как это грамотно решить?
Код main.c привожу ниже.





Код HAL_ADC_MspInit

Re: Nucleo-STM32f413zh. Демоны

Пт мар 26, 2021 15:55:19

Вопрос снят. Все работает.
Дело было не в машине... а в криворуких создателях маркировки для онной платы.
Выводы АЦП на плате напечатаны так, что непонятно, где какой. Иными словами, совпадал только Ain0, на остальных висели "космические голоса".
Ответить