mcpField
A
adc-dac-baremetal

adc-dac-baremetal

github.com/mohitmishra786開発269300 回インストール18 週間前に更新
リポジトリ

adc-dac-baremetal について

ADC と DAC 周辺機能を設定するベアメタル開発向けスキルです。STM32 を中心に、単発変換、キャリブレーション、DMA による連続サンプリング、DAC 出力を扱います。

主な機能

  1. 01STM32 ADC の単発変換
  2. 02ADC のキャリブレーション手順
  3. 03循環 DMA サンプリングとバッファリング
  4. 04DAC の静的出力設定
  5. 05アナログ読み取りと DMA の問題調査

活用シーン

  1. 01アナログ温度センサーや電圧センサーの読み取り
  2. 02DMA による連続サンプリング
  3. 03DAC による音声または制御電圧の出力
  4. 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 — アナログピンモード

コメント