Class library for internal ADC and DAC connected by SPI. ADC is triggered by TIM2. This library support clock generator using TIM3 for switched-capacitor filter to smooth output signal of DAC. This library includes derivative class to support interrupt occured in end of AD conversion. Slave select of SPI for DAC is generated using TIM4. Validated for ST Nucleo F401RE, F411RE. New version. 内蔵 ADC と,SPI 接続の DAC のためのクラスライブラリ.ADC の変換開始トリガは TIM2 で発生.DAC の出力信号を平滑化するためのスイッチトキャパシタフィルタ用のクロックは TIM3 を使用.DAC の SPI 用スレーブ選択信号は TIM4 で発生.ST Nucleo F401RE,F411RE で動作を確認.新バージョン

Dependents:   UIT2_MovingAverage UIT2_AllpassReverb UIT2_CombReverb UIT2_FIR_LPF_Symmetry ... more

Committer:
MikamiUitOpen
Date:
Mon Feb 02 23:33:01 2015 +0000
Revision:
21:3731753ebf24
Parent:
20:c49f3b565a87
22

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:6e0ed5adfe47 1 //------------------------------------------------------
MikamiUitOpen 0:6e0ed5adfe47 2 // Class for single DAC in MCP4922 -- Header
MikamiUitOpen 0:6e0ed5adfe47 3 // Fast version
MikamiUitOpen 0:6e0ed5adfe47 4 //
MikamiUitOpen 21:3731753ebf24 5 // 2015/02/03, Copyright (c) 2015 MIKAMI, Naoki
MikamiUitOpen 0:6e0ed5adfe47 6 //------------------------------------------------------
MikamiUitOpen 0:6e0ed5adfe47 7
MikamiUitOpen 0:6e0ed5adfe47 8 #ifndef DAC_MCP4922_HPP
MikamiUitOpen 0:6e0ed5adfe47 9 #define DAC_MCP4922_HPP
MikamiUitOpen 0:6e0ed5adfe47 10
MikamiUitOpen 20:c49f3b565a87 11 #include "DAC_MCP4921.hpp"
MikamiUitOpen 0:6e0ed5adfe47 12
MikamiUitOpen 0:6e0ed5adfe47 13 namespace Mikami
MikamiUitOpen 0:6e0ed5adfe47 14 {
MikamiUitOpen 20:c49f3b565a87 15 class DAC_MCP4922 : public DAC_MCP4921
MikamiUitOpen 0:6e0ed5adfe47 16 {
MikamiUitOpen 0:6e0ed5adfe47 17 public:
MikamiUitOpen 0:6e0ed5adfe47 18 enum DAC { DAC_A = 0, DAC_B = 0x8000 };
MikamiUitOpen 0:6e0ed5adfe47 19
MikamiUitOpen 0:6e0ed5adfe47 20 // Constructor
MikamiUitOpen 0:6e0ed5adfe47 21 DAC_MCP4922(
MikamiUitOpen 3:77bc5550dc10 22 DAC dac = DAC_A, // channel A
MikamiUitOpen 0:6e0ed5adfe47 23 PinName mosi = SPI_MOSI, // D11
MikamiUitOpen 0:6e0ed5adfe47 24 PinName sclk = SPI_SCK, // D13
MikamiUitOpen 0:6e0ed5adfe47 25 PinName cs = SPI_CS, // D10
MikamiUitOpen 20:c49f3b565a87 26 PinName ldac = SPI_MISO) // D12
MikamiUitOpen 20:c49f3b565a87 27 : DAC_MCP4921(mosi, sclk, cs, ldac),
MikamiUitOpen 20:c49f3b565a87 28 wcr_(dac | 0x3000) {}
MikamiUitOpen 8:f933fcd30408 29
MikamiUitOpen 21:3731753ebf24 30 protected:
MikamiUitOpen 21:3731753ebf24 31 void SetCR(DAC dac) { wcr_ = dac | 0x3000; }
MikamiUitOpen 21:3731753ebf24 32
MikamiUitOpen 0:6e0ed5adfe47 33 private:
MikamiUitOpen 0:6e0ed5adfe47 34 uint16_t wcr_; // write command register
MikamiUitOpen 0:6e0ed5adfe47 35
MikamiUitOpen 0:6e0ed5adfe47 36 // for inhibition of copy constructor
MikamiUitOpen 0:6e0ed5adfe47 37 DAC_MCP4922(const DAC_MCP4922&);
MikamiUitOpen 0:6e0ed5adfe47 38 // for inhibition of substitute operator
MikamiUitOpen 2:2a3b4ed3eb58 39 DAC_MCP4922& operator=(const DAC_MCP4922&);
MikamiUitOpen 2:2a3b4ed3eb58 40
MikamiUitOpen 0:6e0ed5adfe47 41 // for internal use
MikamiUitOpen 20:c49f3b565a87 42 virtual void WriteDac(uint16_t value)
MikamiUitOpen 18:0bfced9d5526 43 {
MikamiUitOpen 19:900efc6796d4 44 while (IsBusy()) {}
MikamiUitOpen 20:c49f3b565a87 45 SlaveSelect();
MikamiUitOpen 20:c49f3b565a87 46 WriteSpi(value | wcr_);
MikamiUitOpen 18:0bfced9d5526 47 }
MikamiUitOpen 0:6e0ed5adfe47 48 };
MikamiUitOpen 0:6e0ed5adfe47 49 }
MikamiUitOpen 0:6e0ed5adfe47 50 #endif // DAC_MCP4922_HPP
MikamiUitOpen 21:3731753ebf24 51