不韋 呂 / UIT_ADDA

Dependents:   UIT2_MovingAverage UIT2_AllpassReverb UIT2_CombReverb UIT2_FIR_LPF_Symmetry ... more

Committer:
MikamiUitOpen
Date:
Thu Jan 29 07:55:04 2015 +0000
Revision:
18:0bfced9d5526
Parent:
17:fd4f92ad4323
Child:
19:900efc6796d4
19

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
MikamiUitOpen 0:6e0ed5adfe47 3 //
MikamiUitOpen 17:fd4f92ad4323 4 // 2015/01/29, Copyright (c) 2015 MIKAMI, Naoki
MikamiUitOpen 0:6e0ed5adfe47 5 //------------------------------------------------------
MikamiUitOpen 0:6e0ed5adfe47 6
MikamiUitOpen 0:6e0ed5adfe47 7 #include "DAC_MCP4922.hpp"
MikamiUitOpen 0:6e0ed5adfe47 8
MikamiUitOpen 0:6e0ed5adfe47 9 namespace Mikami
MikamiUitOpen 0:6e0ed5adfe47 10 {
MikamiUitOpen 0:6e0ed5adfe47 11 DAC_MCP4922::DAC_MCP4922(DAC dac, PinName mosi, PinName sclk,
MikamiUitOpen 16:0001d3e93bee 12 PinName cs, PinName ldac)
MikamiUitOpen 0:6e0ed5adfe47 13 : wcr_(dac | 0x3000), spi_(mosi, NC, sclk),
MikamiUitOpen 0:6e0ed5adfe47 14 ld_(ldac, 0), mySpi_((SPI_TypeDef*)NULL)
MikamiUitOpen 0:6e0ed5adfe47 15 {
MikamiUitOpen 0:6e0ed5adfe47 16 if ( (mosi == PA_7) || (mosi == PB_5) ) mySpi_ = SPI1;
MikamiUitOpen 0:6e0ed5adfe47 17 if ( (mosi == PB_15) || (mosi == PC_3) ) mySpi_ = SPI2;
MikamiUitOpen 0:6e0ed5adfe47 18 if ( mosi == PC_12 ) mySpi_ = SPI3;
MikamiUitOpen 0:6e0ed5adfe47 19
MikamiUitOpen 16:0001d3e93bee 20 // Set SPI format
MikamiUitOpen 0:6e0ed5adfe47 21 spi_.format(16, 0);
MikamiUitOpen 16:0001d3e93bee 22 // Clock source of F401 for SPI1 : 84 MHz,
MikamiUitOpen 16:0001d3e93bee 23 // SPI2, SPI3 : 42 MHz
MikamiUitOpen 16:0001d3e93bee 24 mySpi_->CR1 = (mySpi_->CR1 & ~SPI_CR1_BR);
MikamiUitOpen 16:0001d3e93bee 25 if (mySpi_ == SPI1) mySpi_->CR1 += SPI_CR1_BR_0;
MikamiUitOpen 16:0001d3e93bee 26 #ifdef __STM32F411xE_H
MikamiUitOpen 16:0001d3e93bee 27 mySpi_->CR1 += SPI_CR1_BR_0;
MikamiUitOpen 16:0001d3e93bee 28 #endif // __STM32F411xE_H
MikamiUitOpen 16:0001d3e93bee 29
MikamiUitOpen 0:6e0ed5adfe47 30 // timer prescaler is set same value of boud rate for SPI
MikamiUitOpen 0:6e0ed5adfe47 31 uint16_t psc = (2 << ((mySpi_->CR1 >> 3) & 0x07)) - 1;
MikamiUitOpen 17:fd4f92ad4323 32 if (mySpi_ != SPI1) psc = (psc + 1)*2 - 1;
MikamiUitOpen 17:fd4f92ad4323 33 ss_ = new Tim4_ss(psc, 19, cs);
MikamiUitOpen 0:6e0ed5adfe47 34
MikamiUitOpen 0:6e0ed5adfe47 35 // Set DAC to 0
MikamiUitOpen 0:6e0ed5adfe47 36 WriteDac(0);
MikamiUitOpen 0:6e0ed5adfe47 37 while (IsBusy()) {}
MikamiUitOpen 0:6e0ed5adfe47 38 }
MikamiUitOpen 0:6e0ed5adfe47 39
MikamiUitOpen 14:6c60601c1834 40 void DAC_MCP4922::ScfClockTim3(uint32_t clock, PinName pin)
MikamiUitOpen 8:f933fcd30408 41 {
MikamiUitOpen 14:6c60601c1834 42 if ( (pin != PA_6) && (pin != PB_4) && (pin != PB_5) &&
MikamiUitOpen 14:6c60601c1834 43 (pin != PC_6) && (pin != PC_7) && (pin != PC_8) && (pin != PC_9) )
MikamiUitOpen 14:6c60601c1834 44 {
MikamiUitOpen 14:6c60601c1834 45 fprintf(stderr, "\r\nIllegal pin name in DAC_MCP4922::ScfClockTim3()\r\n");
MikamiUitOpen 14:6c60601c1834 46 while (true) {}
MikamiUitOpen 14:6c60601c1834 47 }
MikamiUitOpen 14:6c60601c1834 48
MikamiUitOpen 14:6c60601c1834 49 PwmOut clockSCF(pin);
MikamiUitOpen 8:f933fcd30408 50
MikamiUitOpen 8:f933fcd30408 51 TIM3->ARR = SystemCoreClock/clock - 1;
MikamiUitOpen 8:f933fcd30408 52 TIM3->PSC = 0;
MikamiUitOpen 8:f933fcd30408 53 // Set capture/compare register 2
MikamiUitOpen 14:6c60601c1834 54 if ( (pin == PA_6) || (pin == PB_4) || (pin == PC_6) )
MikamiUitOpen 14:6c60601c1834 55 TIM3->CCR1 = (TIM3->ARR + 1)/2;
MikamiUitOpen 14:6c60601c1834 56 if ( (pin == PB_5) || (pin == PC_7) )
MikamiUitOpen 14:6c60601c1834 57 TIM3->CCR2 = (TIM3->ARR + 1)/2;
MikamiUitOpen 14:6c60601c1834 58 if (pin == PC_8)
MikamiUitOpen 14:6c60601c1834 59 TIM3->CCR3 = (TIM3->ARR + 1)/2;
MikamiUitOpen 14:6c60601c1834 60 if (pin == PC_9)
MikamiUitOpen 14:6c60601c1834 61 TIM3->CCR4 = (TIM3->ARR + 1)/2;
MikamiUitOpen 8:f933fcd30408 62 }
MikamiUitOpen 0:6e0ed5adfe47 63 }
MikamiUitOpen 18:0bfced9d5526 64