Example of use of library for build-in ADC and DAC in STM32F446 mounted on Nucleo F446RE. Nucleo F446RE に搭載されている STM32F446 の内蔵 ADC, DAC 用のライブラリの使用例.

Dependencies:   F446_AD_DA mbed

Committer:
MikamiUitOpen
Date:
Fri Nov 11 06:34:26 2016 +0000
Revision:
0:d1d504410da6
Child:
1:e462cfe9476d
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:d1d504410da6 1 //----------------------------------------------------------------
MikamiUitOpen 0:d1d504410da6 2 // STM32F446 内蔵の ADC, DAC のためのクラスのデモプログラム
MikamiUitOpen 0:d1d504410da6 3 // 使用するクラス:AdcDual, DacDual, AdcDualIntr
MikamiUitOpen 0:d1d504410da6 4 // 処理の内容:AD 変換器からの入力をそのまま DA 変換器に出力する
MikamiUitOpen 0:d1d504410da6 5 // ポーリング方式と割り込み方式の2つの例を示す
MikamiUitOpen 0:d1d504410da6 6 //
MikamiUitOpen 0:d1d504410da6 7 // 2016/11/11, Copyright (c) 2016 MIKAMI, Naoki
MikamiUitOpen 0:d1d504410da6 8 //----------------------------------------------------------------
MikamiUitOpen 0:d1d504410da6 9
MikamiUitOpen 0:d1d504410da6 10 #include "F446_DAC.hpp"
MikamiUitOpen 0:d1d504410da6 11 using namespace Mikami;
MikamiUitOpen 0:d1d504410da6 12
MikamiUitOpen 0:d1d504410da6 13 // 割り込みの例を有効にする場合,次の #define 文を有効にすること
MikamiUitOpen 0:d1d504410da6 14 #define ADC_EXAMPLE_OF_INTERRUPT
MikamiUitOpen 0:d1d504410da6 15
MikamiUitOpen 0:d1d504410da6 16 //----------------------------------------------------------------
MikamiUitOpen 0:d1d504410da6 17 // ポーリングを使う例
MikamiUitOpen 0:d1d504410da6 18 #ifndef ADC_EXAMPLE_OF_INTERRUPT
MikamiUitOpen 0:d1d504410da6 19 #include "F446_ADC.hpp"
MikamiUitOpen 0:d1d504410da6 20
MikamiUitOpen 0:d1d504410da6 21 int main()
MikamiUitOpen 0:d1d504410da6 22 {
MikamiUitOpen 0:d1d504410da6 23 const int FS = 10000; // Sampling frequency: 10 kHz
MikamiUitOpen 0:d1d504410da6 24 AdcDual myAdc(FS); // See "F446_ADC.hpp"
MikamiUitOpen 0:d1d504410da6 25 DacDual myDac; // See "F446_DAC.hpp"
MikamiUitOpen 0:d1d504410da6 26 myDac.ScfClock(420000); // 出力の LPF の遮断周波数を 4.2 kHz に設定
MikamiUitOpen 0:d1d504410da6 27
MikamiUitOpen 0:d1d504410da6 28 printf("\r\nUsing polling\r\n");
MikamiUitOpen 0:d1d504410da6 29 while (true)
MikamiUitOpen 0:d1d504410da6 30 {
MikamiUitOpen 0:d1d504410da6 31 // float 型の例
MikamiUitOpen 0:d1d504410da6 32 float sn1, sn2;
MikamiUitOpen 0:d1d504410da6 33 myAdc.Read(sn1, sn2);
MikamiUitOpen 0:d1d504410da6 34 /*
MikamiUitOpen 0:d1d504410da6 35 // uint16_t 型の例
MikamiUitOpen 0:d1d504410da6 36 uint16_t sn1, sn2;
MikamiUitOpen 0:d1d504410da6 37 myAdc.Read(sn1, sn2);
MikamiUitOpen 0:d1d504410da6 38 */
MikamiUitOpen 0:d1d504410da6 39 myDac.Write(sn1, sn2);
MikamiUitOpen 0:d1d504410da6 40 }
MikamiUitOpen 0:d1d504410da6 41 }
MikamiUitOpen 0:d1d504410da6 42
MikamiUitOpen 0:d1d504410da6 43 //----------------------------------------------------------------
MikamiUitOpen 0:d1d504410da6 44 // ADC 変換終了割り込みを使う例
MikamiUitOpen 0:d1d504410da6 45 #else
MikamiUitOpen 0:d1d504410da6 46 #include "F446_ADC_Interrupt.hpp"
MikamiUitOpen 0:d1d504410da6 47
MikamiUitOpen 0:d1d504410da6 48 const int FS_ = 10000; // Sampling frequency: 10 kHz
MikamiUitOpen 0:d1d504410da6 49 AdcDual_Intr myAdc_(FS_); // See "F446_ADC_Interrupt.hpp"
MikamiUitOpen 0:d1d504410da6 50 DacDual myDac_; // See "F446_DAC.hpp"
MikamiUitOpen 0:d1d504410da6 51
MikamiUitOpen 0:d1d504410da6 52 // ADC 変換終了割り込みに対する割り込みサービス・ルーチン
MikamiUitOpen 0:d1d504410da6 53 void AdcIsr()
MikamiUitOpen 0:d1d504410da6 54 {
MikamiUitOpen 0:d1d504410da6 55 float sn1, sn2;
MikamiUitOpen 0:d1d504410da6 56 myAdc_.Read(sn1, sn2);
MikamiUitOpen 0:d1d504410da6 57 myDac_.Write(sn1, sn2);
MikamiUitOpen 0:d1d504410da6 58 }
MikamiUitOpen 0:d1d504410da6 59
MikamiUitOpen 0:d1d504410da6 60 int main()
MikamiUitOpen 0:d1d504410da6 61 {
MikamiUitOpen 0:d1d504410da6 62 printf("\r\nUsing interrupt\r\n");
MikamiUitOpen 0:d1d504410da6 63
MikamiUitOpen 0:d1d504410da6 64 myDac_.ScfClock(420000); // 出力の LPF の遮断周波数を 4.2 kHz に設定
MikamiUitOpen 0:d1d504410da6 65 // ADC 変換終了割り込みに対する割り込みサービス・ルーチンを割り当てる
MikamiUitOpen 0:d1d504410da6 66 myAdc_.SetIntrVec(&AdcIsr);
MikamiUitOpen 0:d1d504410da6 67
MikamiUitOpen 0:d1d504410da6 68 uint32_t n = 0;
MikamiUitOpen 0:d1d504410da6 69 while (true)
MikamiUitOpen 0:d1d504410da6 70 {
MikamiUitOpen 0:d1d504410da6 71 printf("%d\r\n", n++);
MikamiUitOpen 0:d1d504410da6 72 wait(1);
MikamiUitOpen 0:d1d504410da6 73 }
MikamiUitOpen 0:d1d504410da6 74 }
MikamiUitOpen 0:d1d504410da6 75 #endif