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:
Sat Jul 25 05:40:26 2015 +0000
Revision:
8:543daa087bd5
Parent:
6:9deca4a06c8c
6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 6:9deca4a06c8c 1 //--------------------------------------------------------------
MikamiUitOpen 4:03c4518de836 2 // Class for generate SPI slave select using TIM4
MikamiUitOpen 4:03c4518de836 3 //
MikamiUitOpen 6:9deca4a06c8c 4 // PB_6 (D10), PB_7, PB_8 (D15), and PB_9 (D14) can be used
MikamiUitOpen 6:9deca4a06c8c 5 // 2015/03/31, Copyright (c) 2015 MIKAMI, Naoki
MikamiUitOpen 6:9deca4a06c8c 6 //--------------------------------------------------------------
MikamiUitOpen 4:03c4518de836 7
MikamiUitOpen 4:03c4518de836 8 #ifndef TIM4_SLAVESELECT_HPP
MikamiUitOpen 4:03c4518de836 9 #define TIM4_SLAVESELECT_HPP
MikamiUitOpen 4:03c4518de836 10
MikamiUitOpen 4:03c4518de836 11 #include "mbed.h"
MikamiUitOpen 4:03c4518de836 12
MikamiUitOpen 4:03c4518de836 13 namespace Mikami
MikamiUitOpen 4:03c4518de836 14 {
MikamiUitOpen 6:9deca4a06c8c 15 class TIM4_SlaveSelect
MikamiUitOpen 4:03c4518de836 16 {
MikamiUitOpen 4:03c4518de836 17 public:
MikamiUitOpen 6:9deca4a06c8c 18 TIM4_SlaveSelect(
MikamiUitOpen 6:9deca4a06c8c 19 uint16_t psc, // prescaler
MikamiUitOpen 6:9deca4a06c8c 20 uint16_t arr, // auto-reload register
MikamiUitOpen 6:9deca4a06c8c 21 PinName pin) // pin name
MikamiUitOpen 6:9deca4a06c8c 22 : myTim_(TIM4)
MikamiUitOpen 4:03c4518de836 23 {
MikamiUitOpen 6:9deca4a06c8c 24 if ( (pin != PB_6) && (pin != PB_7)
MikamiUitOpen 6:9deca4a06c8c 25 &&(pin != PB_8) && (pin != PB_9) )
MikamiUitOpen 6:9deca4a06c8c 26 {
MikamiUitOpen 6:9deca4a06c8c 27 fprintf(stderr, "\r\nIllegal pin name in TIM4_SlaveSelect\r\n");
MikamiUitOpen 6:9deca4a06c8c 28 while (true) {}
MikamiUitOpen 6:9deca4a06c8c 29 }
MikamiUitOpen 6:9deca4a06c8c 30
MikamiUitOpen 6:9deca4a06c8c 31 PwmOut css(pin); // for slave select
MikamiUitOpen 4:03c4518de836 32 myTim_->CR1 |= TIM_CR1_OPM; // one-pulse mode
MikamiUitOpen 4:03c4518de836 33 myTim_->PSC = psc; // prescaler
MikamiUitOpen 4:03c4518de836 34 myTim_->ARR = arr; // pulse width
MikamiUitOpen 4:03c4518de836 35 if (pin == PB_6) myTim_->CCR1 = 1;
MikamiUitOpen 4:03c4518de836 36 if (pin == PB_7) myTim_->CCR2 = 1;
MikamiUitOpen 4:03c4518de836 37 if (pin == PB_8) myTim_->CCR3 = 1;
MikamiUitOpen 4:03c4518de836 38 if (pin == PB_9) myTim_->CCR4 = 1;
MikamiUitOpen 4:03c4518de836 39 }
MikamiUitOpen 6:9deca4a06c8c 40
MikamiUitOpen 4:03c4518de836 41 // Generate slave select
MikamiUitOpen 4:03c4518de836 42 void SlaveSelect()
MikamiUitOpen 4:03c4518de836 43 {
MikamiUitOpen 6:9deca4a06c8c 44 myTim_->CNT = 1; // Set counter 1
MikamiUitOpen 4:03c4518de836 45 myTim_->CR1 |= TIM_CR1_CEN; // Enable TIM4
MikamiUitOpen 4:03c4518de836 46 }
MikamiUitOpen 6:9deca4a06c8c 47
MikamiUitOpen 4:03c4518de836 48 private:
MikamiUitOpen 6:9deca4a06c8c 49 TIM_TypeDef* const myTim_;
MikamiUitOpen 4:03c4518de836 50
MikamiUitOpen 4:03c4518de836 51 // Forbid to use copy constructor
MikamiUitOpen 6:9deca4a06c8c 52 TIM4_SlaveSelect(const TIM4_SlaveSelect&);
MikamiUitOpen 4:03c4518de836 53 // Forbid to use substitution operator
MikamiUitOpen 6:9deca4a06c8c 54 TIM4_SlaveSelect operator=(const TIM4_SlaveSelect&);
MikamiUitOpen 4:03c4518de836 55 };
MikamiUitOpen 4:03c4518de836 56 }
MikamiUitOpen 4:03c4518de836 57 #endif // TIM4_SLAVESELECT_HPP