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:
Sun Apr 19 09:39:28 2015 +0000
Revision:
7:14cdca8b48f8
Parent:
6:9deca4a06c8c
8

Who changed what in which revision?

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