2017年01月26日

内臓DAC出力

今回はSTM32でのDMAなしのDA変換について紹介します。


環境はこれまで同様、
・STM32F303K8
 +SW4STM32(System Workbench for STM32)
 +STM32CubeMX(HAL ライブラリ、F3 ver. 1.60)
です。

マイコン内蔵のDACというと、
キャリブレーションやブザー用などに付いてるオマケ程度で
応答や分解能など性能は全く期待できないという印象でした。


STM32F3のDACは8bit、12bitの分解能が選択でき、
Settlingタイムも3usと高速で外付け汎用DACと変わらない性能が
内臓DACで実現されています。

つまり、DACを外付けしなくとも、
モータ制御等に使えそうです。




STM32CubeMXは下記のように設定してコードを出力しました。


PA4 DAC1OUT1
PA5 DAC1OUT2

dac.png



割り込み等を使わずに単に出力するだけの場合は非常に簡単です。

サンプル出力例は下記の通りです。
階段状の出力を2ch独立に出してみました。

MX_DAC1_Init();

HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);
HAL_DAC_Start(&hdac1, DAC_CHANNEL_2);


 int i=0;

  while (1)
  {
 
      if(i>3600)i=0;
      else i=i+300;
      HAL_DAC_SetValue(&hdac1, 
                   DAC_CHANNEL_1,
                   DAC_ALIGN_12B_R,
                   i);
      HAL_DAC_SetValue(&hdac1, 
                   DAC_CHANNEL_2,
                   DAC_ALIGN_12B_R,
                   4096-i);

      printf("DA TEST: %d \n",i);
      HAL_Delay(200);
 

  }


思った以上にシンプルな関数構成でDAC出力することができました。

内臓DACを使用してサーボアンプの制御なども色々出来そうです。
そのうち、試してみたいと思います。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック