ADC1、ADC2、および2つのDMA ADCチャネルのデュアルレギュラー同時モードをstm32f303ディスカバリで実装したいとします。 CubeMX例でデュアルレギュラー同時モードで2つのDMA ADCチャネルの使用STM32
:2つのDMAチャネル(ADCマスターのための1つ、ADCスレーブ用)の
使用も可能 である:これは、高 ADCの変換速度とアプリケーションの場合に推奨される構成であります他のDMAチャネル を集中的に使用します。マスタとスレーブのための2つの別々の DMAチャンネルの•使用:
AN4195
DMAを使用してによれば、2つの可能な場合があります。各ADC(この場合は、 、MDMA [1:0])をクリアしたままにしておく必要があります。第1のDMAチャネルは、ADC_DRからのマスターADC変換データを が読み取るために使用され、DMA要求 は、マスターADCの各EOCイベントで生成されます。第2のDMA チャネルは、ADC_DRからスレーブADC変換データを読み取るために使用され、 スレーブADCの各EOCイベントでDMA要求が生成されます。
HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED); HAL_ADCEx_Calibration_Start(&hadc2, ADC_SINGLE_ENDED); HAL_ADC_Start(&hadc2); HAL_ADCEx_MultiModeStart_DMA(&hadc1, (uint32_t*)buffer, 3);
しかし、どのように我々は2つのチャンネルを実行することができます:1つのチャネルコードの場合
?偉大なHALライブラリを:) - 私は
HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED);
HAL_ADCEx_Calibration_Start(&hadc2, ADC_SINGLE_ENDED);
HAL_ADC_Start(&hadc2);
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)ADC1_data,sizeof(ADC1_data)/sizeof(ADC1_data[0]));
HAL_ADC_Start_DMA(&hadc2,(uint32_t*)ADC2_data,sizeof(ADC2_data)/sizeof(ADC2_data[0]));
CubeMxからのこの見積もりは間違っています。バスマトリクスの負荷が5Mよりも10M要求の集中度は低いですか? –