ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
25 марта
1503276 Топик полностью
Anvar (04.03.2025 11:26, просмотров: 91) ответил Anvar на Вопрос по АЦП в STM32 в режиме DMA.
Промежуточные итоги, сделал как советовал SciFi синхронизацию в случае "сдвига". В принципе, можно просто всегда читать начиная с CNDTR по кольцу. Нашел несколько косяков, но один точно мог влиять 

Когда был добавлен датчик момента, он опрашивался через второй UART, причем по прерываниям, а основной UART в фоновом режиме. Функции обмена были общие, нереентерабельные. Функцию приема я разделил, а функцию передачи почему то забыл.

Передача делалась с указанием номера UART:

StatusPutUART 	PutUARTDMAByte (uint8_t *buf, uint16_t Size) {
if (HAL_UART_Transmit_DMA(Buf[NumberUART].huart, buf, Size) == HAL_OK) { return NoErrorUARTDMA;
else {
............
}
}

В результате, естественно, иногда это функция вызывалась внутри себя по прерыванию, с соответствующим результатом. Вероятность очень низкая, но ненулевая.

Но "сдвиг" по прежнему возникает, но токи читаются правильно.