| |
//STA013 register definitions
#define DLA 0x46
#define DLB 0x47
#define DRA 0x48
#define DRB 0x49
#define MFSFDF_411 0x50
#define PLLFRAC_411_L 0x51
#define PLLFRAC_411_R 0x52
#define PCMDIVIDER 0x54
#define PCMCONF 0x55
#define MSFDF_X 0x61
#define DAC_CLK_MODE 0x63
#define PLLFRAC_L 0x64
#define PLLFRAC_H 0x65
#define PLLCTRL 0x05
#define HEADH 0x43
#define HEADM 0x44
#define HEADL 0x45
#define ERROR_CODE 0x0f
#define PLAY 0x13
#define MUTE 0x14
#define DATA_REQ_ENABLE 0x18
#define RUN 0x72
//base address of the config data stored in eeprom
#define STA_CONFIG_ADDR 0x0000
//some convenient constants
//following are names for the bits in
//TWCR register
#define TWINT 7 //TWI Interrupt flag
#define TWEA 6 //TWI Enable ACK bit
#define TWSTA 5 //TWI START condition bit
#define TWSTO 4 //TWI STOP condition bit
#define TWWC 3 //TWI Write Collision flag
#define TWEN 2 //TWI Enable bit
#define TWIE 0 //TWI interrupt enable
//I2C STA013 address + r/w bit
#define STA_READ 0x86 //to write to STA013
#define STA_WRITE 0x87//STA_READ + 1 //to listen from STA013
//Mega128 TWI STATUS codes
#define TWI_START 0x08
#define TWI_R_START 0x10
//Master Reciever mode, for reading from STA013
//refer to page 209 of ATMEL documentation
#define MR_ARBF_NOT_ACK 0x38 //arbitration fail
#define MR_ADD_ACK 0x40
#define MR_NO_ACK 0x48
#define MR_DATA_ACK 0x50
#define MR_DATA_NO_ACK 0x58
//Master Transmitter mode
#define MT_ADD_ACK 0x18
#define MT_DATA_ACK 0x28
//define MACRO for sending START condition
#define I2C_START TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
#define I2C_WAIT while(!(TWCR&(1<<TWINT)))
//#define I2C_READ TWCR = (1<<TWINT) //clear TWINT flag check table 88 atmel doc
#define I2C_TRANSMIT TWCR = (1<<TWINT)|(1<<TWEN)//start transmission
#define I2C_STOP TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO) //stop condition
//MP3 data interface
#define DATA_REQ PIND.5 //DATA_REQ high when STA013 requests a MP3 byte
#define SDI PORTD.7 //Serial Data
#define SCKR PORTD.6 //Serial Clk
void STA013_Init(void);
void Read_Eeprom(void);
void STA013_Audio_Send(unsigned char data);
void STA013_Play_MP3(void);
void STA013_Play_Buffer(void);
void STA013_Audio_Stop(void);
void STA013_Test_Serial_Interface(void);
void STA013_Show_Info(void);//displays config info
void STA013_Write(unsigned char address, unsigned char data);
|