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
MCP4922Single.cpp@2:2a8a3dc3da8e, 2014-07-29 (annotated)
- 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?
User | Revision | Line number | New 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 | } |