Class library for internal ADC and DAC connected by SPI. 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. Validated for ST Nucleo F401RE, F411RE. 内蔵 ADC と,SPI 接続の DAC のためのクラスライブラリ.DAC の出力信号を平滑化するためのスイッチトキャパシタフィルタ用のクロックは TIM3 を使用.ST Nucleo F401RE,F411RE で動作を確認.

Dependents:   UITDSP_ADDA_Example UIT2_MovingAv_Intr UIT2_VariableFIR UIT2_VowelSynthesizer ... more

Committer:
MikamiUitOpen
Date:
Mon Mar 16 23:59:24 2015 +0000
Revision:
4:03c4518de836
Parent:
2:0cf4cc40ee02
Child:
6:9deca4a06c8c
5

Who changed what in which revision?

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