AM中波放送用SDR.CICフィルタのみを使用.CQ出版社「トランジスタ技術」誌,2021年4月号に掲載

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers F446_DAC.hpp Source File

F446_DAC.hpp

00001 //--------------------------------------------------------
00002 //  STM32F446 内蔵の DAC 用のクラス(ヘッダ)
00003 //      出力端子:   A2 (PA_4) に固定
00004 //
00005 //  2020/07/23, Copyright (c) 2020 MIKAMI, Naoki
00006 //--------------------------------------------------------
00007 
00008 #include "mbed.h"
00009 
00010 #ifndef DAC_F446_SINGLE_HPP
00011 #define DAC_F446_SINGLE_HPP
00012 
00013 namespace Mikami
00014 {
00015     class DacF446
00016     {
00017     public:
00018         // コンストラクタ, A2 に接続される CH1 のみを有効にする
00019         DacF446();
00020 
00021         virtual ~DacF446() {}
00022 
00023         // -1.0f <= data <= 1.0f
00024         void Write(float data) { WriteDac1(ToUint16(data)); }
00025 
00026     private:
00027         static const int BIT_WIDTH_ = 12;
00028         DAC_TypeDef* const DAC_;    // DA 変換器に対応する構造体のポインタ
00029 
00030         // DAC の CH1 へ右詰めで出力する
00031         void WriteDac1(uint16_t val) { DAC_->DHR12R1 = val; }
00032 
00033         // 飽和処理を行い uint16_t 型のデータを戻り値とする
00034         uint16_t ToUint16(float val)
00035         {   return __USAT((val + 1.0f)*2048.0f, BIT_WIDTH_); }
00036 
00037         // コピー・コンストラクタ,代入演算子の禁止のため
00038         DacF446(const DacF446&);
00039         DacF446& operator=(const DacF446&);
00040     };
00041 }
00042 #endif  // DAC_F446_SINGLE_HPP