adc-dac-baremetal について
ADC と DAC 周辺機能を設定するベアメタル開発向けスキルです。STM32 を中心に、単発変換、キャリブレーション、DMA による連続サンプリング、DAC 出力を扱います。
主な機能
- 01STM32 ADC の単発変換
- 02ADC のキャリブレーション手順
- 03循環 DMA サンプリングとバッファリング
- 04DAC の静的出力設定
- 05アナログ読み取りと DMA の問題調査
活用シーン
- 01アナログ温度センサーや電圧センサーの読み取り
- 02DMA による連続サンプリング
- 03DAC による音声または制御電圧の出力
- 04STM32 のリセット後の ADC キャリブレーション
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mohitmishra786/ low-level-dev-skills --skill adc-dac-baremetalインストール後、Claude Code で/adc-dac-baremetalを入力して読み込まれたか確認します。
詳細
ADC および DAC(ベアメタル)
目的
ADC および DAC 周辺機器を設定します。チャネル選択、サンプリング時間、キャリブレーション手順、DMA の循環バッファー、DAC の静的/動的出力を扱います。
使用する場面
- アナログセンサー(温度、電圧)の読み取り
- DAC による音声または制御電圧の出力
- DMA による連続サンプリング
- STM32 のリセット後の ADC キャリブレーション
ワークフロー
1. STM32 ADC の単一変換
/* Enable ADC1 and GPIOA clock; PA0 analog mode */
ADC1->CR2 |= ADC_CR2_ADON;
for (volatile int i = 0; i < 10000; i++); /* stabilization — RM value */
ADC1->SMPR2 |= ADC_SMPR2_SMP0_2; /* 84 cycles sample time ch0 */
ADC1->SQR3 = 0; /* channel 0, 1 conversion */
ADC1->CR2 |= ADC_CR2_SWSTART;
while (!(ADC1->SR & ADC_SR_EOC))
;
uint16_t sample = ADC1->DR;
F1/F4 ファミリーでは、RM に従って ADC_Calibration() / ADC_CR2_RSTCAL/CAL を実行します。
2. DMA による ADC の循環変換
/* ADC1 → DMA2 Stream0, circular mode into buffer[64] */
/* Configure DMA: periph-to-mem, halfword, increment mem, circular */
ADC1->CR2 |= ADC_CR2_DMA | ADC_CR2_CONT;
DMA2_Stream0->CR |= DMA_SxCR_EN;
ダブルバッファリングには、ハーフトランスファー割り込み/トランスファー完了割り込みを使用します。
3. DAC 出力(STM32)
RCC->APB1ENR |= RCC_APB1ENR_DACEN;
DAC->CR |= DAC_CR_EN1;
DAC->DHR12R1 = 2048; /* mid-scale 3.3V reference */
4. エージェントの使用方法
/adc-dac-baremetal Set up ADC1 channel 0 with DMA circular buffer
よくある問題
| 症状 | 原因 | 対処方法 |
|---|---|---|
| 読み取り値が不安定 | サンプリング時間が短い | SMP ビットを増やします |
| EOC が変化しない | クロックが有効になっていない | RCC で ADC を有効にします |
| 電圧が正しくない | Vref が 3.3V ではない | VDDA を測定し、キャリブレーションします |
| DMA データが破損する | バッファーのアライメント | uint16_t のアライメント済みバッファーを使用します |
関連スキル
skills/baremetal/dma-baremetal— ADC DMA ストリームskills/baremetal/timers-pwm-baremetal— ADC 外部トリガーskills/baremetal/gpio-baremetal— アナログピンモード
コメント
Markdown 対応