Source lists for AD converter is explained on "Interface" No.10, CQ publishing Co.,Ltd, 2014. Source lists for DA converter is explained on "Interface" No.11, CQ publishing Co.,Ltd, 2014. 本ライブラリのADコンバータ用のソースリストについては,CQ出版社のインターフェース 2014年10月号に載っています. DAコンバータ用のソースリストについての説明は,CQ出版社のインターフェース 2014年11月号に載っています.

Dependents:   FFT_Sampling FIR_LPF_Direct FIR_LPF_Symmetry IIR_LPF ... more

Fork of SignalProcessingIO by CQpub0 Mikami

Committer:
CQpub0Mikami
Date:
Tue Jul 29 06:41:14 2014 +0000
Revision:
2:2a8a3dc3da8e
Parent:
0:a2cdffe24b67
ver.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CQpub0Mikami 0:a2cdffe24b67 1 //------------------------------------------------------
CQpub0Mikami 0:a2cdffe24b67 2 // Class for 1 DAC in MCP4922
CQpub0Mikami 0:a2cdffe24b67 3 //
CQpub0Mikami 0:a2cdffe24b67 4 // Copyright (c) 2014 MIKAMI, Naoki, 2014/06/18
CQpub0Mikami 0:a2cdffe24b67 5 //------------------------------------------------------
CQpub0Mikami 0:a2cdffe24b67 6
CQpub0Mikami 0:a2cdffe24b67 7 #include "MCP4922Single.hpp"
CQpub0Mikami 0:a2cdffe24b67 8
CQpub0Mikami 0:a2cdffe24b67 9 namespace Mikami
CQpub0Mikami 0:a2cdffe24b67 10 {
CQpub0Mikami 0:a2cdffe24b67 11 Dac::Dac(DAC dac, PinName mosi, PinName sclk,
CQpub0Mikami 0:a2cdffe24b67 12 PinName cs, PinName ldac, int hz)
CQpub0Mikami 0:a2cdffe24b67 13 : wcr_(dac | 0x3000), mySpi_(mosi, NC, sclk),
CQpub0Mikami 0:a2cdffe24b67 14 myCs_(cs, 1), myLd_(ldac, 0)
CQpub0Mikami 0:a2cdffe24b67 15 {
CQpub0Mikami 0:a2cdffe24b67 16 // Set SPI format and bus frequency
CQpub0Mikami 0:a2cdffe24b67 17 mySpi_.format(16, 0);
CQpub0Mikami 0:a2cdffe24b67 18 mySpi_.frequency(hz);
CQpub0Mikami 0:a2cdffe24b67 19
CQpub0Mikami 0:a2cdffe24b67 20 // Set DAC to 0
CQpub0Mikami 0:a2cdffe24b67 21 WriteDac(0);
CQpub0Mikami 0:a2cdffe24b67 22 }
CQpub0Mikami 0:a2cdffe24b67 23
CQpub0Mikami 0:a2cdffe24b67 24 void Dac::Write(float value)
CQpub0Mikami 0:a2cdffe24b67 25 {
CQpub0Mikami 0:a2cdffe24b67 26 if (value < -1.0f) value = -1.0f;
CQpub0Mikami 0:a2cdffe24b67 27 if (value > 1.0f) value = 1.0f;
CQpub0Mikami 0:a2cdffe24b67 28
CQpub0Mikami 0:a2cdffe24b67 29 WriteDac((uint16_t)((value + 1.0f)*2047));
CQpub0Mikami 0:a2cdffe24b67 30 }
CQpub0Mikami 0:a2cdffe24b67 31
CQpub0Mikami 0:a2cdffe24b67 32 void Dac::Write(uint16_t value)
CQpub0Mikami 0:a2cdffe24b67 33 {
CQpub0Mikami 0:a2cdffe24b67 34 WriteDac((value > 4095) ? 4095 : value);
CQpub0Mikami 0:a2cdffe24b67 35 }
CQpub0Mikami 0:a2cdffe24b67 36
CQpub0Mikami 0:a2cdffe24b67 37 void Dac::Ldac()
CQpub0Mikami 0:a2cdffe24b67 38 {
CQpub0Mikami 0:a2cdffe24b67 39 myLd_.write(0);
CQpub0Mikami 0:a2cdffe24b67 40 wait_us(1);
CQpub0Mikami 0:a2cdffe24b67 41 myLd_.write(1);
CQpub0Mikami 0:a2cdffe24b67 42 }
CQpub0Mikami 0:a2cdffe24b67 43
CQpub0Mikami 0:a2cdffe24b67 44 void Dac::WriteDac(uint16_t value)
CQpub0Mikami 0:a2cdffe24b67 45 {
CQpub0Mikami 0:a2cdffe24b67 46 myCs_.write(0); // cs <= L
CQpub0Mikami 0:a2cdffe24b67 47 mySpi_.write(value | wcr_);
CQpub0Mikami 0:a2cdffe24b67 48 myCs_.write(1); // cs <= H
CQpub0Mikami 0:a2cdffe24b67 49 }
CQpub0Mikami 0:a2cdffe24b67 50 }