BaseMachine OscController Library

SpiOscController.h

Committer:
ryood
Date:
2017-02-13
Revision:
2:40a153ffb0c0
Parent:
1:d3217569b33e
Child:
4:7146756bcc4f

File content as of revision 2:40a153ffb0c0:

/*
 * BaseMachine SpiOscController
 *
 * mbed Rev 135 / mbed-rtos Rev 123
 * 
 * 2017.02.13
 *
 */
#ifndef _SPI_OSC_CONTROLLER_H_
#define _SPI_OSC_CONTROLLER_H_

#include "mbed.h"
#include "OscController.h"

#define DCO_PACKET_HEADER   (0x55)
#define SPI_WAIT            (wait_us(1))

class SpiOscController : public OscController {
public:
    SpiOscController(SPI* _pSpim, PinName _DcoCS, uint8_t _waveShape=WAVESHAPE_SQUARE, uint8_t _pulseWidth=127) :
        OscController(_waveShape, _pulseWidth),
        pSpiM(_pSpim),
        DcoCS(_DcoCS, 1) {}
        
    // frequecny: 周波数の10倍値を16bit左シフト
    virtual void outDco()
    {
        #if(UART_TRACE)        
        OscController::outDco();
        #endif
        
        DcoCS = 0;
        pSpiM->write(DCO_PACKET_HEADER);
        pSpiM->write(waveShape);
        pSpiM->write(pulseWidth);
        pSpiM->write(frequency10 >> 8);
        pSpiM->write(frequency10 & 0xff);
        SPI_WAIT;
        DcoCS = 1;
    }
    
private:
    SPI* pSpiM;
    DigitalOut DcoCS;
};

#endif //_SPI_OSC_CONTROLLER_H_