BaseMachine OscController Library

Committer:
ryood
Date:
Mon Feb 13 16:02:37 2017 +0000
Revision:
1:d3217569b33e
Parent:
0:d941144b13db
Child:
2:40a153ffb0c0
Child:
3:31a6b490986f
mbed Rev 135 / mbed-rtos Rev 123

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryood 0:d941144b13db 1 /*
ryood 0:d941144b13db 2 * BaseMachine SpiOscController
ryood 0:d941144b13db 3 *
ryood 1:d3217569b33e 4 * mbed Rev 135 / mbed-rtos Rev 123
ryood 0:d941144b13db 5 *
ryood 0:d941144b13db 6 * 2017.02.13
ryood 0:d941144b13db 7 *
ryood 0:d941144b13db 8 */
ryood 0:d941144b13db 9 #ifndef _SPI_OSC_CONTROLLER_H_
ryood 0:d941144b13db 10 #define _SPI_OSC_CONTROLLER_H_
ryood 0:d941144b13db 11
ryood 0:d941144b13db 12 #include "mbed.h"
ryood 0:d941144b13db 13 #include "OscController.h"
ryood 0:d941144b13db 14
ryood 0:d941144b13db 15 #define DCO_PACKET_HEADER (0x55)
ryood 0:d941144b13db 16 #define SPI_WAIT (wait_us(1))
ryood 0:d941144b13db 17
ryood 0:d941144b13db 18 class SpiOscController : public OscController {
ryood 0:d941144b13db 19 public:
ryood 0:d941144b13db 20 SpiOscController(SPI* _pSpim, PinName _DcoCS, uint8_t _waveShape=WAVESHAPE_SQUARE, uint8_t _pulseWidth=127) :
ryood 0:d941144b13db 21 OscController(_waveShape, _pulseWidth),
ryood 0:d941144b13db 22 pSpiM(_pSpim),
ryood 0:d941144b13db 23 DcoCS(_DcoCS, 1) {}
ryood 0:d941144b13db 24
ryood 0:d941144b13db 25 virtual void outDco(uint32_t frequency)
ryood 0:d941144b13db 26 {
ryood 0:d941144b13db 27 uint16_t frequency16 = frequency >> 16;
ryood 0:d941144b13db 28
ryood 0:d941144b13db 29 #if(UART_TRACE)
ryood 0:d941144b13db 30 printf("%d\t", frequency16);
ryood 0:d941144b13db 31 printf("%d\t", DCO_PACKET_HEADER);
ryood 0:d941144b13db 32 printf("%d\t", waveShape);
ryood 0:d941144b13db 33 printf("%d\t", pulseWidth);
ryood 0:d941144b13db 34 printf("%d\t", frequency16 >> 8);
ryood 0:d941144b13db 35 printf("%d\t", frequency16 & 0xff);
ryood 0:d941144b13db 36 printf("\r\n");
ryood 0:d941144b13db 37 #endif
ryood 0:d941144b13db 38
ryood 0:d941144b13db 39 DcoCS = 0;
ryood 0:d941144b13db 40 pSpiM->write(DCO_PACKET_HEADER);
ryood 0:d941144b13db 41 pSpiM->write(waveShape);
ryood 0:d941144b13db 42 pSpiM->write(pulseWidth);
ryood 0:d941144b13db 43 pSpiM->write(frequency16 >> 8);
ryood 0:d941144b13db 44 pSpiM->write(frequency16 & 0xff);
ryood 0:d941144b13db 45 SPI_WAIT;
ryood 0:d941144b13db 46 DcoCS = 1;
ryood 0:d941144b13db 47 }
ryood 0:d941144b13db 48
ryood 0:d941144b13db 49 private:
ryood 0:d941144b13db 50 SPI* pSpiM;
ryood 0:d941144b13db 51 DigitalOut DcoCS;
ryood 0:d941144b13db 52 };
ryood 0:d941144b13db 53
ryood 0:d941144b13db 54 #endif //_SPI_OSC_CONTROLLER_H_