Just a simple library for VLSI's mp3/midi codec chip

Dependents:   IsuProject_LPC1768

VS1053.h

Committer:
kayekss
Date:
2013-11-08
Revision:
1:00c19f771676
Parent:
0:708868399033
Child:
2:47ba7e2259cd

File content as of revision 1:00c19f771676:

// ==================================================== Nov 08 2013, kayeks ==
// VS1053.h
// ===========================================================================
// Just a simple library for VLSI's mp3/midi codec chip
//   - Minimal and simple implementation (and dirty too)

#ifndef KAYX_VS1053_H_
#define KAYX_VS1053_H_

class VS1053 {
private:
    SPI spi;
    DigitalOut cs;
    DigitalOut bsync;
    DigitalIn dreq;
    DigitalOut rst;

public:
    static const uint8_t SCI_MODE        = 0x00;
    static const uint8_t SCI_STATUS      = 0x01;
    static const uint8_t SCI_BASS        = 0x02;
    static const uint8_t SCI_CLOCKF      = 0x03;
    static const uint8_t SCI_DECODE_TIME = 0x04;
    static const uint8_t SCI_AUDATA      = 0x05;
    static const uint8_t SCI_WRAM        = 0x06;
    static const uint8_t SCI_WRAMADDR    = 0x07;
    static const uint8_t SCI_HDAT0       = 0x08;
    static const uint8_t SCI_HDAT1       = 0x09;
    static const uint8_t SCI_AIADDR      = 0x0a;
    static const uint8_t SCI_VOL         = 0x0b;
    static const uint8_t SCI_AICTRL0     = 0x0c;
    static const uint8_t SCI_AICTRL1     = 0x0d;
    static const uint8_t SCI_AICTRL2     = 0x0e;
    static const uint8_t SCI_AICTRL3     = 0x0f;
    
    VS1053(PinName mosiPin, PinName misoPin, PinName sckPin,
           PinName cs, PinName bsync, PinName dreq, PinName rstPin,
           uint32_t spiFrequency=1000000);
    ~VS1053();
    void hardwareReset();
    void sendDataByte(uint8_t);
    size_t sendDataBlock(uint8_t*, size_t);
    void clockUp();
    bool sendCancel();
    bool stop();
    
private:
    void writeReg(uint8_t, uint16_t);
    uint16_t readReg(uint8_t);
};

#endif