VLSI decoder definitions. More...
Go to the source code of this file.
Data Structures | |
struct | _VS_PLUGIN_INFO |
struct | _VS_WRAM_DATA |
struct | _VS_PARAMX_INFO |
struct | VS_HEADERINFO |
struct | _VSDCB |
Internal codec control block. More... | |
Defines | |
#define | AUDIO0_VSAUTO |
#define | AUDIO0_DAC_MIN_GAIN -127 |
#define | AUDIO0_DAC_MAX_GAIN 0 |
#define | AUDIO_DAC_MIN_GAIN AUDIO0_DAC_MIN_GAIN |
#define | AUDIO_DAC_MAX_GAIN AUDIO0_DAC_MAX_GAIN |
#define | AUDIO_DAC_MAX_TREB 8 |
#define | AUDIO_DAC_MAX_TFIN 15 |
#define | AUDIO_DAC_MAX_BASS 15 |
#define | AUDIO_DAC_MAX_BFIN 15 |
#define | AUDIO_SETWRITETIMEOUT 0x010d |
#define | AUDIO_GETWRITETIMEOUT 0x010e |
#define | AUDIO_PLAY 0x3001 |
Immediately start playing. | |
#define | AUDIO_CANCEL 0x3002 |
Immediately stop playing and discard buffer. | |
#define | AUDIO_GET_STATUS 0x3003 |
#define | AUDIO_GET_PLAYGAIN 0x3004 |
#define | AUDIO_SET_PLAYGAIN 0x3005 |
#define | AUDIO_GET_PBSIZE 0x3006 |
#define | AUDIO_SET_PBSIZE 0x3007 |
#define | AUDIO_GET_PBLEVEL 0x3008 |
#define | AUDIO_GET_PBWLOW 0x3009 |
#define | AUDIO_SET_PBWLOW 0x300A |
#define | AUDIO_GET_PBWHIGH 0x300B |
#define | AUDIO_SET_PBWHIGH 0x300C |
#define | AUDIO_BEEP 0x300F |
#define | AUDIO_GET_DECINFO 0x3010 |
Retrieve decoder information. | |
#define | AUDIO_GET_DECCAPS 0x3011 |
Retrieve decoder capabilities. | |
#define | AUDIO_GET_DECFMTS 0x3012 |
Retrieve decoder formats. | |
#define | AUDIO_FMT_PLUGIN 0x00000001 |
#define | AUDIO_FMT_WAV_PCM 0x00000002 |
#define | AUDIO_FMT_WAV_ADPCM 0x00000004 |
#define | AUDIO_FMT_WAV_IMA_ADPCM 0x00000008 |
#define | AUDIO_FMT_VORBIS 0x00000100 |
#define | AUDIO_FMT_MPEG1_L1 0x00001000 |
#define | AUDIO_FMT_MPEG1_L2 0x00002000 |
#define | AUDIO_FMT_MPEG1_L3 0x00004000 |
#define | AUDIO_FMT_MPEG2_AAC 0x00010000 |
#define | AUDIO_FMT_MPEG4_AAC 0x00020000 |
#define | AUDIO_FMT_WMA_V2 0x00100000 |
#define | AUDIO_FMT_WMA_V7 0x00200000 |
#define | AUDIO_FMT_WMA_V8 0x00400000 |
#define | AUDIO_FMT_WMA_V9 0x00800000 |
#define | AUDIO_SET_DECFMTS 0x3013 |
Enable or disable specific decoder formats. | |
#define | AUDIO_GET_CODINFO 0x3014 |
Retrieve encoder information. | |
#define | AUDIO_GET_CODCAPS 0x3015 |
Retrieve encoder capabilities. | |
#define | AUDIO_GET_CODFMTS 0x3016 |
Retrieve encoder formats. | |
#define | AUDIO_SET_CODFMTS 0x3017 |
Enable or disable specific encoder formats. | |
#define | AUDIO_GET_MIDINFO 0x3018 |
Retrieve midi information. | |
#define | AUDIO_GET_MIDCAPS 0x3019 |
Retrieve midi capabilities. | |
#define | AUDIO_FMT_GMIDI1 0x00000001 |
#define | AUDIO_FMT_GMIDI2 0x00000002 |
#define | AUDIO_FMT_SPMIDI0 0x00000004 |
#define | AUDIO_SET_TREB 0x301a |
Set audio enhancement treble value. | |
#define | AUDIO_GET_TREB 0x301b |
Get audio enhancement treble value. | |
#define | AUDIO_SET_TFIN 0x301c |
Set audio enhancement treble frequency. | |
#define | AUDIO_GET_TFIN 0x301d |
Get audio enhancement treble frequency. | |
#define | AUDIO_SET_BASS 0x301e |
Set audio enhancement bass value. | |
#define | AUDIO_GET_BASS 0x301f |
Get audio enhancement bass value. | |
#define | AUDIO_SET_BFIN 0x3020 |
Set audio enhancement bass frequency. | |
#define | AUDIO_GET_BFIN 0x3021 |
Get audio enhancement bass frequency. | |
#define | AUDIO_PLUGIN_UPLOAD 0x3030 |
Upload plug-in. | |
#define | AUDIO_IRQ_ENABLE 0x3031 |
Enable interrupts. | |
#define | AUDIO_SET_ICLOCK 0x3032 |
Set internal clock. | |
#define | AUDIO_WRITE_CMEM 0x3038 |
Upload into WRAM. | |
#define | AUDIO_SET_PARAMX 0x3040 |
Set parametric x. | |
#define | AUDIO_GET_PARAMX 0x3041 |
Get parametric x. | |
#define | VSP4_CHIP_ID_OFF 0x00 |
#define | VSP4_VERSION_OFF 0x02 |
#define | VSP4_CONFIG1_OFF 0x03 |
#define | VSP4_PLAY_SPEED_OFF 0x04 |
#define | VSP4_BIT_RATE_PER_100_OFF 0x05 |
#define | VSP4_END_FILL_BYTE_OFF 0x06 |
#define | VSP4_RATE_TUNE_OFF 0x07 |
#define | VSP4_PLAY_MODE_OFF 0x09 |
#define | VSP4_SAMPLE_COUNTER_OFF 0x0a |
#define | VSP4_VU_METER_OFF 0x0c |
#define | VSP4_AD_MIXER_GAIN_OFF 0x0d |
#define | VSP4_AD_MIXER_CONFIG_OFF 0x0e |
#define | VSP4_PCM_MIXER_RATE_OFF 0x0f |
#define | VSP4_PCM_MIXER_FREE_OFF 0x10 |
#define | VSP4_PCM_MIXER_VOL_OFF 0x11 |
#define | VSP4_EQ5_PARAMS_OFF(i) (0x12 + (i)) |
#define | VSP4_EQ5_UPDATED_OFF 0x1c |
#define | VSP4_SPEED_SHIFTER_OFF 0x1d |
#define | VSP4_EAR_SPEAKER_LEVEL_OFF 0x1e |
#define | VSP4_SDI_FREE_OFF 0x1f |
#define | VSP4_AUDIO_FILL_OFF 0x20 |
#define | VSP4_LATEST_SOF_OFF 0x25 |
#define | VSP4_POSITION_MSEC_OFF 0x27 |
#define | VSP4_RESYNC_OFF 0x29 |
#define | VSP4_ENC_TX_UART_DIV_OFF 0x2a |
#define | VSP4_ENC_TX_UART_BYTE_SPEED_OFF 0x2b |
#define | VSP4_ENC_TX_PAUSE_GPIO_OFF 0x2c |
#define | VSP4_ENC_SEC_ADAPT_MULTIPLIER_OFF 0x2d |
#define | VSP4_ENC_CHANNEL_MAX_OFF 0x3c |
#define | VSP4_ENC_SERIAL_NUMBER_OFF 0x3e |
#define | VSP4_WMA_CUR_PACKET_SIZE_OFF 0x2a |
#define | VSP4_WMA_PACKET_SIZE_OFF 0x2c |
#define | VSP4_AAC_SCE_FOUND_MASK_OFF 0x2a |
#define | VSP4_AAC_CPE_FOUND_MASK_OFF 0x2b |
#define | VSP4_AAC_LFE_FOUND_MASK_OFF 0x2c |
#define | VSP4_AAC_PLAY_SELECT_OFF 0x2d |
#define | VSP4_AAC_DYN_COMPRESS_OFF 0x2e |
#define | VSP4_AAC_DYN_BOOST_OFF 0x2f |
#define | VSP4_AAC_SBR_AND_PS_STATUS_OFF 0x30 |
#define | VSP4_AAC_SBR_PS_FLAGS_OFF 0x31 |
#define | VSP4_VORBIS_GAIN_OFF 0x2a |
#define | VS_PLAYMODE_MONO_OUTPUT_ON ox0001 |
#define | VS_PLAYMODE_PAUSE_ON 0x0002 |
#define | VS_PLAYMODE_VUMETER_ON 0x0004 |
#define | VS_PLAYMODE_ADMIXER_ON 0x0008 |
#define | VS_PLAYMODE_PCMMIXER_ON 0x0010 |
#define | VS_PLAYMODE_EQ5_ON 0x0020 |
#define | VS_PLAYMODE_SPEEDSHIFTER_ON 0x0040 |
#define | VS_OPCODE_READ 3 |
#define | VS_OPCODE_WRITE 2 |
#define | VS_FLUSH_BYTES 2048 |
Application register 0 index. | |
#define | CODEC_STATUS_IDLE 0 |
#define | CODEC_STATUS_PLAYING 1 |
#define | CODEC_STATUS_RECORDING 2 |
#define | VSCODEC_CMD_TIMEOUT NUT_WAIT_INFINITE |
Minimum time in milliseconds to held hardware reset low. | |
#define | VSCODEC_DATA_CHUNK_SIZE 32 |
Number of data bytes we can send without checking DREQ. | |
Typedefs | |
typedef struct _VS_PLUGIN_INFO | VS_PLUGIN_INFO |
typedef struct _VS_WRAM_DATA | VS_WRAM_DATA |
typedef struct _VS_PARAMX_INFO | VS_PARAMX_INFO |
typedef struct _VSDCB | VSDCB |
Internal codec control block. | |
Functions | |
int | VsCodecWaitReady (NUTDEVICE *dev, uint32_t tmo) |
Wait until codec is ready. | |
uint16_t | VsCodecReg (NUTDEVICE *dev, uint_fast8_t op, uint_fast8_t reg, uint_fast16_t val) |
uint16_t | VsCodecMode (NUTDEVICE *dev, uint_fast16_t flags, uint_fast16_t mask) |
Read and modify VLSI audio codec mode flags. | |
int | VsDecoderSetVolume (NUTDEVICE *dev, int left, int right) |
Set volume. | |
int | VsDecoderSetBass (NUTDEVICE *dev, int treb, int tfin, int bass, int bfin) |
Set Bass. | |
uint16_t | VsCodecBeep (NUTDEVICE *dev, uint16_t fsin) |
Start or stop sine wave beeper. | |
int | VsDecoderBufferInit (NUTDEVICE *dev, uint32_t size) |
int | VsCodecIOCtl (NUTDEVICE *dev, int req, void *conf) |
Handle I/O controls for audio codec. | |
int | VsCodecRead (NUTFILE *nfp, void *data, int len) |
Read from the encoder. | |
int | VsCodecWrite (NUTFILE *nfp, const void *data, int len) |
Write to decoder. | |
NUTFILE * | VsCodecOpen (NUTDEVICE *dev, const char *name, int mode, int acc) |
int | VsCodecClose (NUTFILE *nfp) |
int | VsCodecWrite_P (NUTFILE *nfp, PGM_P buffer, int len) |
Write program data to decoder. | |
void | FeederThread (void *arg) |
Variables | |
uint8_t | zero_chunk [VSCODEC_DATA_CHUNK_SIZE] |
NUTDEVICE | devVsCodec |
VS10XX device information structure. | |
NUTDEVICE | devSpiVsCodec0 |
Mode Control Register | |
#define | VS_MODE_REG 0 |
Register index. | |
#define | VS_SM_DIFF 0x0001 |
Left channel inverted. | |
#define | VS_SM_RESET 0x0004 |
Allow MPEG Layers I & II. | |
#define | VS_SM_DACT 0x0100 |
VS1001 MPEG Layers I & II enable. | |
#define | VS_SM_BITORD 0x0200 |
Data bus bit order. | |
#define | VS_SM_SDIORD 0x0200 |
SDI most significant bit last. | |
Status Register | |
Untested and not recommended. Note, that this bit is available on the VS1001 only and is used as a chip select mode flag on other members of the VS10xx family. Share SPI chip select. VS1001K master mode clock speed. Untested and not recommended. Note, that this bit is available on the VS1001 only and is used as an SDI mode flag on other members of the VS10xx family. VS1002 native SDI mode. Default is 0 on the VS1011E and 1 on the VS1002. Not available on the VS1001K. ADPCM recording. Available on VS1033 and VS1053. ADPCM high pass filter. If set at the same time as VS_SM_ADPCM and VS_SM_RESET, ADPCM mode will start with a high-pass filter. This may help intelligibility of speech when there is lots of background noise. Available on VS1033. ADPCM recording selector. Used to select the input for ADPCM recording. If cleared, microphone input is used. If set to 1, LINEIN is used instead. Available on VS1033 and VS1053. Input clock range. Activates a clock divider at the XTAL input. Should be set as soon as possible after a chip reset. Available on VS1033 and VS1053. | |
#define | VS_STATUS_REG 1 |
Register index. | |
#define | VS_SS_APDOWM1 0x0004 |
Internal analog volume control mask. | |
#define | VS_SS_APDOWN2 0x0008 |
Analog driver power down. | |
#define | VS_SS_VER 0x00F0 |
Version mask. | |
#define | VS_SS_VER_LSB 4 |
Version LSB. | |
#define | VS1001_SS_VER 0 |
#define | VS1011_SS_VER 1 |
#define | VS1011E_SS_VER 2 |
#define | VS1002_SS_VER 2 |
#define | VS1003_SS_VER 3 |
#define | VS1053_SS_VER 4 |
#define | VS1033_SS_VER 5 |
#define | VS1063_SS_VER 6 |
#define | VS1103_SS_VER 7 |
Clock Frequency and Multiplier Register | |
On some earlier chips, audio interrupts may be missed when writing to this register. For the VS1001K see VS_SM_BASS. | |
#define | VS_CLOCKF_REG 3 |
Register index. | |
Decode Time Register | |
Should be set to crystal clock divided by 2000, if the clock is not 24.576 MHz. Must be set before beginning decoding MP3 data. Otherwise the sample rate will not be set correctly. Used for the VS1001, VS1011 and VS1002. VS1003/VS1033 clock frequency mask. Should be set to crystal clock divided by 4000, if the clock is not 12.288 MHz. Used for the VS1003, VS1033 and VS1053. Allowed multiplier addition. Used for WMA decoding with the VS1003, VS1033 and VS1053. Summand 0.5 is not available on the VS1053. Clock multiplier. Available on the VS1003, VS1033 and VS1053. However, multiplier 1.5 is not available on the VS1053. Clock doubler enable. Used for the VS1001, VS1011 and VS1002. | |
#define | VS_DECODE_TIME_REG 4 |
Register index. | |
Miscellaneous Audio Data Register | |
#define | VS_AUDATA_REG 5 |
Register index. | |
#define | VS_AD_STEREO 0x8000 |
Stereo flag. | |
RAM Read/Write Register | |
Value is sample rate divided by 2. Writing to this register will change the sample rate on the run. To reduce the digital power consumption when idle, you can set a low sample rate. Current bit rate mask. Current sampling rate index mask. | |
#define | VS_WRAM_REG 6 |
Register index. | |
RAM Read/Write Base Address Register | |
#define | VS_WRAMADDR_REG 7 |
Register index. | |
Application Start Address Register | |
Used to activate previously uploaded application programs. | |
#define | VS_AIADDR_REG 10 |
Register index. | |
Volume Control Register | |
#define | VS_VOL_REG 11 |
Register index. | |
#define | VS_VOL_RIGHT 0x00FF |
Right channel volume mask. | |
#define | VS_VOL_RIGHT_LSB 0 |
Right channel volume LSB. | |
#define | VS_VOL_LEFT 0xFF00 |
Right channel volume mask. | |
#define | VS_VOL_LEFT_LSB 8 |
Right channel volume LSB. | |
#define | VS_VOL_MAX 0x0000 |
#define | VS_VOL_MIN 0xFEFE |
#define | VS_VOL_OFF 0xFFFF |
VLSI decoder definitions.
#define AUDIO0_VSAUTO |