ArmマイコンにTRY3 D/Aを試してみる


写真はNECLEO STM32F446RE評価ボードで、プログラム作成にTRY。開発過程や疑問点などをまとめた開発ノートは2冊めとなりました。

2023.10.01

はじめに
 「ARMマイコンにTRY3」では、D/AにTRYです。
 SDRトランシーバーでD/Aの用途として受信では、デジタル信号をオーディオ信号に変換、送信では、IF出力(455kHzを想定)などの構成に必要で、 他にも、デバッグ時の動作確認として使用します。  今回はD/Aを使って、三角波形の出力やノイズ確認にTRYです。

プロジェクトの作成、コード生成
-1.「Lチカ」でのプロジェクト作成手順に同じですが、プロジェクト名は適当に「renshyuDA」とします。
-2.続いて、ピン配置の設定。PA4をDAC1output、デフォルト状態では、それ以外のピンも設定されていますが、reset_stateにします。
-3.続いて、Categories欄をクリックAnalog >DACをクリックでModeがDAC1にチェックされていることを確認
-4.次にClock Configurationの設定でSYSCLKを180MHzに、それ以外の周辺へのクロックも最大に設定、デフォルト設定でもOKですが、高速動作での実力を確認しておけば 今後のソフト作成の参考になります。
-5.次にメニュー欄のコード生成ボタン(歯車マーク)をクリックで、ひな型コードが表示されます。

  ソースコードの記述

 ひな型ソース(クリックで拡大)の/* User code Begin2 */ 〜 /* User code End2 */ の間と/* User code Begin3 */ 〜 /* User code End3 */ 今回のソース(91,92行目と103〜107行目)を記述します。
内容は、変数dataの初期化、DAのスタート、DAにdataをsetしてPA4に出力。以下dataを+1(3.3V/4096 = 0.8mV相当)づつ加算していきます。
 次に、ビルド(トンカチマークアイコン)をクリックしてエラーがなければ、PCとボードをUSB接続してRunをクリックすればプログラムが書き込まれ、PA4出力(ボード上CN8-A2)をシンクロで確認。
 

 

出力波形を見てみる
     

 
 左写真はDA出力波形(0.5V/div 0.2ms/div)、周期は1.56msできれいに0V付近から3.3Vまで出ています。+1加算当たり約0.38usの実行速度です。SDRとして455kHzの出力では1周期 5〜6個のサンプリングになりそうです。
 右写真は、dataの加算stepを+100とした出力波形(0.5V/div, 20us/div)、出力に0.5V程度のBiasが生じているので、急激なdata変化出力する際には要注意です。。

 

出力波形のノイズ見てみる

 左写真は、dataは100に固定して出力ノイズを見た波形(2mV/div,)。約2mVppのノイズの他に、写真では見えませんが5mVpp程度のスパイク状のノイズが乗っています。SDRにまとめたときの 影響はまだ判りませんが、ノイズは意外と少ないように感じます。

 

ソースコードをforループにしてみたら
 プログラムを、for(data=16; data<4095; data++)のループに変更して、実行時間に差が出るのか調べてみました。
結果、元のプログラムの場合波形の1周期、1.56msに対してforループでは1.6msとわずかながらforループの方が遅くなりました。

 

今後の進め方
 ようやく、DACの確認は出来ました、少しづつ慣れてきましたが、次回は、タイマー設定とにTRYです。

GPIOに戻る
  TIMを使うへ
  Top Menu