⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sta.h

📁 51控制STA013实现MP3音频解码
💻 H
字号:
#ifndef _STA_H
#define _STA_H

//I2C定义
#define GENERATE_STOP        0x54     /* 置位 STO, 复位 STA 、 SI          */
#define RELEASE_BUS_ACK      0x44     /* 复位 STO,STA,SI 并置位  AA (ack)  */
#define RELEASE_BUS_NOACK    0x40     /* 复位 STO,STA,SI 并置位 AA (noack) */
#define RELEASE_BUS_STA      0x64     /* 起动总线/重新起动总线, 置位 STA   */

//引脚定义:复位,数据请求,数据使能端
sbit RESET = P3^2;
sbit DATA_REQ = P3^3;
//sbit BIT_EN = P1^7;
sbit SDI = P3^0;
sbit SCKR = P3^1;

//声道参数
#define STA_CHANNEL_RIGHT           0xF0
#define STA_CHANNEL_LEFT            0xF1
#define STA_CHANNEL_MIX             0xF2
#define STA_CHANNEL_STEREO          0xF3
                                           
//音色模式
#define STA_TIMBRE_NORMAL           0xE0    //普通
#define STA_TIMBRE_METAL            0xE1    //金属
#define STA_TIMBRE_LOCAL            0xE2    //现场
#define STA_TIMBRE_BASS             0xE3    //重低音
#define STA_TIMBRE_SPEECH           0xE4    //语音

///////////////////////////////////////////////////////////////////////////////////
// STA013 I2C address
#define STA_I2C_DEV		       0x86
#define STA_IDENT	               0xAC

// STA013 register (sub)address
#define STA_REG_VERSION                0x00
#define STA_REG_IDENT                  0x01
#define STA_REG_PLLCTL_1               0x05
#define STA_REG_PLLCTL_2               0x06
#define STA_REG_PLLCTL_3               0x07
#define STA_REG_REQ_POL                0x0c
#define STA_REG_SCLK_POL               0x0d
#define STA_REG_ERROR_CODE             0x0f
#define STA_REG_SOFT_RESET             0x10
#define STA_REG_PLAY                   0x13
#define STA_REG_MUTE                   0x14
#define STA_REG_CMD_INTERRUPT          0x16
#define STA_REG_DATA_REQ_ENABLE        0x18
#define STA_REG_SYNCSTATUS             0x40
#define STA_REG_ANCCOUNT_L             0x41
#define STA_REG_ANCCOUNT_H             0x42
#define STA_REG_HEAD_H                 0x43
#define STA_REG_HEAD_M                 0x44
#define STA_REG_HEAD_L                 0x45
#define STA_REG_DLA                    0x46
#define STA_REG_DLB                    0x47
#define STA_REG_DRA                    0x48
#define STA_REG_DRB                    0x49
#define STA_REG_MFSDF_441              0x50
#define STA_REG_PLLFRAC_441_L          0x51
#define STA_REG_PLLFRAC_441_H          0x52
#define STA_REG_PCMDIVIDER             0x54
#define STA_REG_PCMCONF                0x55
#define STA_REG_PCMCROSS               0x56
#define STA_REG_ANC_DATA_1             0x59
#define STA_REG_ANC_DATA_2             0x5a
#define STA_REG_ANC_DATA_3             0x5b
#define STA_REG_ANC_DATA_4             0x5c
#define STA_REG_ANC_DATA_5             0x5d
#define STA_REG_MFSDF                  0x61
#define STA_REG_DAC_CLK_MODE           0x63
#define STA_REG_PLLFRAC_L              0x64
#define STA_REG_PLLFRAC_H              0x65
#define STA_REG_FRAME_CNT_L            0x67
#define STA_REG_FRAME_CNT_M            0x68
#define STA_REG_FRAME_CNT_H            0x69
#define STA_REG_AVERAGE_BITRATE        0x6a
#define STA_REG_SOFTVERSION            0x71
#define STA_REG_RUN                    0x72
#define STA_REG_TREBLE_FREQUENCY_LOW   0x77
#define STA_REG_TREBLE_FREQUENCY_HIGH  0x78
#define STA_REG_BASS_FREQUENCY_LOW     0x79
#define STA_REG_BASS_FREQUENCY_HIGH    0x7a
#define STA_REG_TREBLE_ENHANCE         0x7b
#define STA_REG_BASS_ENHANCE           0x7c
#define STA_REG_TONE_ATTEN             0x7d

#define MIN_VOLUME_ATTENUATION		0
#define MAX_VOLUME_ATTENUATION		96
#define MIN_TONE_ATTENUATION		0
#define MAX_TONE_ATTENUATION		96
#define MIN_BASS_FREQUENCY		100
#define MAX_BASS_FREQUENCY		500
#define MIN_BASS_ENHANCE		-12	// -18dB in 1.5 dB steps
#define MAX_BASS_ENHANCE		+12	// +18dB in 1.5 dB steps
#define MIN_TREBLE_FREQUENCY		1000
#define MAX_TREBLE_FREQUENCY		5000
#define MIN_TREBLE_ENHANCE		-12	// -18dB in 1.5 dB steps
#define MAX_TREBLE_ENHANCE		+12	// +18dB in 1.5 dB steps
#define SOFTMUTE_VOLUME_CHANGE		20

// volume is expected as 0-100 value
// Note:
#define MIN_VOLUME_ATTENUATION     0
#define MAX_VOLUME_ATTENUATION     96

//Functions
//硬复位
void STA_Reset(void);
//求最大值
signed char  MAX(signed char, signed char);
//求最小值
signed char  MIN(signed char, signed char);
//读寄存器
unsigned char STA_ReadReg(unsigned char);
//写寄存器
void STA_WriteReg(unsigned char, unsigned char);
//写配置文件
void STA_DownloadUpdate(void);
//设置音调
void STA_SetTone(signed char, unsigned int, signed char, unsigned int);
//配置STA013并开始解压
void STA_STArtDecoder();
//停止解压
void STA_StopDecoder();
//暂停解压
void STA_PauseDecoder();
//恢复解压
void STA_ResumeDecoder();
//STA013初始化
unsigned char STA_Init();
//设置音量
void STA_SetVolume(unsigned char volume, signed char balance);
//设置音色
STA_SetTimbre(unsigned char uchVol,unsigned char uchTimbre);
//设置声道
void STA_SetChannel(unsigned char uchChannel);
//设置MP3 Header相关寄存器
//void STA_SetHead(unsigned char,unsigned char,unsigned char);
//发送MP3数据到STA013
void STA_SendToDecoder(unsigned char xdata *,unsigned int);

#endif //_STA_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -