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

📄 sta013.h

📁 MP3播放程序
💻 H
字号:

//********************************************************************************************
//
// Title		: MP3测试 - STA013驱动程序文件头
// Author		: Pascal Stang - Copyright (C) 2000-2002
// Created		: **********
// Revised		: 2005/02/19
// Version		: 0.1
// Target MCU	: MEGA16
// Editor Tabs	: 4
//
//		sta013.h部分来自"Procyon AVRlib", 由Ant (ant@126.com)修改测试.
//
// 注: 	本代码用于测试STA013硬件及其驱动程序, 并非一个完整的MP3播放器程序.
//		上电后,会循环不停播放一段约2秒的MP3音乐.
//		硬件没有连接RAM缓冲及储存MP3文件的设备, MP3数据是保存在AVR的FLASH中.
//		本代码经测试, 但可能存有Bugs, 若你发现有任何Bug或有任何建议,
//		请来信告知: gz_ant@126.com
////		本代码部分来自"Procyon AVRlib": http://hubbard.engr.scu.edu/embedded/avr/avrlib/release_notes.html
//		特此感谢它的创始人: Pascal Stang !
//
//		感谢在www.21icbbs.com帮助过winsu的朋友, 希望使用者能发扬网络的 "自由,开放" 精神.
//********************************************************************************************


#ifndef STA013_H
#define STA013_H

#define STA_SCK_DIR			DDRB
#define STA_SCK_OUT			PORTB
#define STA_SCK_IN			PINB
#define STA_SCK				7
#define STA_SDI_DIR			DDRB
#define STA_SDI_OUT			PORTB
#define STA_SDI_IN			PINB
#define STA_SDI				5

#define STA_REQ_DIR			DDRD
#define STA_REQ_OUT			PORTD
#define STA_REQ_IN			PIND
#define STA_REQ				2
#define STA_RST_DIR			DDRD
#define STA_RST_OUT			PORTD
#define STA_RST_IN			PIND
#define STA_RST				3


// 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


void sta_IoIni(void);
void sta_Reset(void);
u8 sta_ReadReg(u8 reg);
void sta_WriteReg(u8 reg, u8 data);
u8 sta_Init(void);
void sta_GetMP3Info(u16 *bitrate, u8 *sampFreq, u8 *mode);
u16 sta_GetAverageBitrate(void);
void sta_SetVolume(u8 volume, s8 balance);
u8 sta_Demand(void);
void sta_SendToDecoder(u16 len);
void sta_StopDecoder(void);
void sta_StartDecoder(void);

#endif

⌨️ 快捷键说明

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