Цитата(Tanya @ Jan 3 2018, 01:18)

Помнится, что сначала надо ведомый запустить. Точно не помню дома.
Я читал Вашу тему, Вы отвечали одному человеку по вопросу Dual Mode, я пробовал запускать вначале третий АЦП и вроде второй тоже, не получилось и вопрос как к такому решению пришли? Где-то в документации или опытным путём? Просто в документации я такого не нашёл
Теперь я осознал глубинный смысл включения ведомых АЦП
Нашёл на гитхабе такой код, переделал со своими хэндлерами и всё заработало, действительно надо было включить вначале
оба АЦП, которые работают в slave режиме
Код
/*##-8- Start ADC3 conversion process ######################################*/
if(HAL_ADC_Start(&AdcHandle3) != HAL_OK)
{
/* Start Error */
Error_Handler();
}
/*##-9- Start ADC2 conversion process ######################################*/
if(HAL_ADC_Start(&AdcHandle2) != HAL_OK)
{
/* Start Error */
Error_Handler();
}
/*##-10- Start ADC1 conversion process and enable DMA #######################*/
if(HAL_ADCEx_MultiModeStart_DMA(&AdcHandle1, (uint32_t*)aADCTripleConvertedValue, 3) != HAL_OK)
{
/* Start Error */
Error_Handler();
}
Другое дело что значения теперь записываются в первые три ячейки массива, а не в девять, как я предполагал (первые три для первых каналов АЦП1-3, вторые три для вторых каналов АЦП1-3, последние для третьих каналов АЦП1-3). И дело в том что включен режим scan mode, и получается, что по идее значения в первых трёх ячейках массива должны меняться местами (как меняются местами каналы АЦП), но такого не происходит
Дополнено: Сейчас в первые три ячейки массива записываются только данные с третьего АЦП (т.е канал 3, 1, 2), почему так???
После бесконечных минут ко мне явилось озарение, луч света ударил мне прямо в лицо и я услышал "Что ты творишь, ирод?! HAL_ADCEx_MultiModeStart_DMA(&hadc1, (uint32_t*)&ADC_buffer,
3); Три, Карл, три!"
Вот поэтому и считает три канала, а надо записать 9
Сообщение отредактировал Connor - Jan 3 2018, 08:20