Добрый день.
Две недели бьюсь над платой. А сегодня начал прицеливаться головой АП стенку.
Словом, такая беда:
Постановка задачи:
Программа со стороны компа, по CDC VCP шлет управляющий символ в плату. Она, по принятию символа должна передать уровень напряжения на 8 каналах АЦП. Словом, задача достойная Эйнштейна, Ферми итп
Делаю проект в Cube32MX, далее Keil.
До бесконечного цикла
Спойлер
HAL_ADC_Start_DMA(&hadc1,(uint32_t*) &adcData,8);В цикле
Спойлер
sprintf(str_tx, "%d",adcData[i]);
CDC_Transmit_FS((unsigned char*)str_tx, strlen(str_tx));И тут началось! Ноги АЦП висят в "воздухе", физическое напряжение на них около 0.01В, а результаты получаю:
(1195,1131,1143,1136,1104,1083,1035,986) Это в АЦПшных попугаях.
Плюс ко всему этому функция sprintf наглухо отказывается корректно работать с float. Только с целыми.
Господа, кто сталкивался с подобным, и в какую сторону мне ковырять даташиты? Моск расплавлен, на Вас уповах)
main в аттаче
- Вложения
-
- main.c
- (15.01 KiB) Скачиваний: 164