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
Child:
6:9deca4a06c8c
5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 4:03c4518de836 1 //------------------------------------------------------
MikamiUitOpen 4:03c4518de836 2 // Class for ADC using TIM2 trigger
MikamiUitOpen 4:03c4518de836 3 // To get bit definition for register in
MikamiUitOpen 4:03c4518de836 4 // peripheral, see "stm32f401xe.h"
MikamiUitOpen 4:03c4518de836 5 //
MikamiUitOpen 4:03c4518de836 6 // 2015/03/14, Copyright (c) 2014 MIKAMI, Naoki
MikamiUitOpen 4:03c4518de836 7 //------------------------------------------------------
MikamiUitOpen 4:03c4518de836 8
MikamiUitOpen 4:03c4518de836 9 #include "ADC_BuiltIn.hpp"
MikamiUitOpen 4:03c4518de836 10
MikamiUitOpen 4:03c4518de836 11 namespace Mikami
MikamiUitOpen 4:03c4518de836 12 {
MikamiUitOpen 4:03c4518de836 13 ADC_BuiltIn::ADC_BuiltIn(PinName pin1, int frequency,
MikamiUitOpen 4:03c4518de836 14 PinName pin2, PinName pin3)
MikamiUitOpen 4:03c4518de836 15 : adc_(pin1), myAdc_(ADC1)
MikamiUitOpen 4:03c4518de836 16 {
MikamiUitOpen 4:03c4518de836 17 myAdc_->CR2 = ADC_EXTERNALTRIGCONVEDGE_RISING // External Trigger on the rising edge
MikamiUitOpen 4:03c4518de836 18 | ADC_EXTERNALTRIGCONV_T2_TRGO // Use Timer2 TRGO event
MikamiUitOpen 4:03c4518de836 19 | ADC_CR2_ADON; // Enable ADC
MikamiUitOpen 4:03c4518de836 20
MikamiUitOpen 4:03c4518de836 21 ch1_ = GetChannelNumber(pin1);
MikamiUitOpen 4:03c4518de836 22 if (pin2 != NC)
MikamiUitOpen 4:03c4518de836 23 {
MikamiUitOpen 4:03c4518de836 24 adc2_ = new AnalogIn(pin2);
MikamiUitOpen 4:03c4518de836 25 ch2_ = GetChannelNumber(pin2);
MikamiUitOpen 4:03c4518de836 26 }
MikamiUitOpen 4:03c4518de836 27 if (pin3 != NC)
MikamiUitOpen 4:03c4518de836 28 {
MikamiUitOpen 4:03c4518de836 29 adc3_ = new AnalogIn(pin3);
MikamiUitOpen 4:03c4518de836 30 ch3_ = GetChannelNumber(pin3);
MikamiUitOpen 4:03c4518de836 31 }
MikamiUitOpen 4:03c4518de836 32 SetTim2(frequency);
MikamiUitOpen 4:03c4518de836 33 Select1stChannel();
MikamiUitOpen 4:03c4518de836 34 }
MikamiUitOpen 4:03c4518de836 35
MikamiUitOpen 4:03c4518de836 36 // Extract channel number
MikamiUitOpen 4:03c4518de836 37 uint8_t ADC_BuiltIn::GetChannelNumber(PinName pin)
MikamiUitOpen 4:03c4518de836 38 {
MikamiUitOpen 4:03c4518de836 39 uint8_t ch = 0;
MikamiUitOpen 4:03c4518de836 40 if ((pin & 0x30) == 0x00) ch = pin;
MikamiUitOpen 4:03c4518de836 41 if ((pin & 0x30) == 0x10) ch = (pin & 0x01) + 8;
MikamiUitOpen 4:03c4518de836 42 if ((pin & 0x30) == 0x20) ch = (pin & 0x07) + 10;
MikamiUitOpen 4:03c4518de836 43 return ch;
MikamiUitOpen 4:03c4518de836 44 }
MikamiUitOpen 4:03c4518de836 45
MikamiUitOpen 4:03c4518de836 46 void ADC_BuiltIn::SetTim2(int frequency)
MikamiUitOpen 4:03c4518de836 47 {
MikamiUitOpen 4:03c4518de836 48 __TIM2_CLK_ENABLE(); // Supply clock, See "stm32f4xx_hal_rcc.h"
MikamiUitOpen 4:03c4518de836 49
MikamiUitOpen 4:03c4518de836 50 SystemCoreClockUpdate(); // Update core clock (for F411RE)
MikamiUitOpen 4:03c4518de836 51 // See system_stm32f4xx.h
MikamiUitOpen 4:03c4518de836 52 TIM_TypeDef* myTim = TIM2;
MikamiUitOpen 4:03c4518de836 53
MikamiUitOpen 4:03c4518de836 54 myTim->CR2 = TIM_CR2_MMS_1; // Update event: as trigger out
MikamiUitOpen 4:03c4518de836 55 myTim->ARR = SystemCoreClock/frequency - 1; // Auto-reload
MikamiUitOpen 4:03c4518de836 56 myTim->PSC = 0; // Prescaler
MikamiUitOpen 4:03c4518de836 57 myTim->CR1 = TIM_CR1_CEN; // Enable TIM2
MikamiUitOpen 4:03c4518de836 58 }
MikamiUitOpen 4:03c4518de836 59 }
MikamiUitOpen 4:03c4518de836 60