📄 i2s.h
字号:
/*
*********************************************************
// Copyright (c)2003 Ark Pioneer Microelectronics Ltd.,
// All Rights Reserved
//
// Filename:i2s.h
// Version:1.0
// Created:2004.01.30 By: Philip
*********************************************************
*/
#ifndef _I2S_H_
#define _I2S_H_
#include "arksoc.h"
#include "config.h"
#include "soc.h"
#include "gpio.h"
#include "irq.h"
extern void InitI2s(void);
extern void Reset(void);
extern void SetI2s0Play(void);
extern BYTE GetTFEntry(void);
extern BYTE GetRFEntry(void);
extern WORD RecvFIFO(WORD number);
extern WORD TranFIFO(WORD number);
#define TRANSMIT_DATA_NUM 80 // the number of data to transmit
#define MAX_FIFO_NUM 32
extern const WORD wData[TRANSMIT_DATA_NUM];
extern WORD g_dataFlag;
#define I2S0_REGISTER_OFFSET 0xBFF20400
#define I2S1_REGISTER_OFFSET 0xBFF20500
/*----------------------------------------------------------------
I2S Registers (32-bit width)
----------------------------------------------------------------*/
// I2s 0 Registers
#define SACR0_I2S0 (I2S0_REGISTER_OFFSET + 0x00)
#define SACR1_I2S0 (I2S0_REGISTER_OFFSET + 0x04)
#define SASR0_I2S0 (I2S0_REGISTER_OFFSET + 0x0c) //read-only
#define SAIMR_I2S0 (I2S0_REGISTER_OFFSET + 0x14)
#define SAICR_I2S0 (I2S0_REGISTER_OFFSET + 0x18) //write-only
#define SADIV_I2S0 (I2S0_REGISTER_OFFSET + 0x60)
#define SADR_I2S0 (I2S0_REGISTER_OFFSET + 0x80)
// I2s 1 registers
#define SACR0_I2S1 (I2S1_REGISTER_OFFSET + 0x00)
#define SACR1_I2S1 (I2S1_REGISTER_OFFSET + 0x04)
#define SASR0_I2S1 (I2S1_REGISTER_OFFSET + 0x0c) //read-only
#define SAIMR_I2S1 (I2S1_REGISTER_OFFSET + 0x14)
#define SAICR_I2S1 (I2S1_REGISTER_OFFSET + 0x18) //write-only
#define SADIV_I2S1 (I2S1_REGISTER_OFFSET + 0x60)
#define SADR_I2S1 (I2S1_REGISTER_OFFSET + 0x80)
/*----------------------------------------------------------------
I2S SACR0 Register bitmask
----------------------------------------------------------------*/
// I2S FIFO Entry: RecvFIFO() bit 21:16
// TranFIFO() bit 13:8
#define bmRESET bmBIT3
#define bmBITCLK bmBIT2
#define bmSYNC bmBIT1
#define bmI2SEN bmBIT0
/*----------------------------------------------------------------
I2S SASR0 Register bitmask
----------------------------------------------------------------*/
// function GetTFEntry() and GetRFEntry() to get FIFO level
// irq bitmask in file irq.h
#define bmBUSY bmBIT2
#define bmR_N0EMPTY bmBIT1
#define bmT_NOFULL bmBIT0
/*----------------------------------------------------------------
I2S Audio Sample Frequency
----------------------------------------------------------------*/
#define FREQ_48KHZ 0x0c // BITCLK = 3.072MHz
#define FREQ_44KHZ 0x0d // BITCLK = 2.836MHz
#define FREQ_22KHZ 0x1a // BITCLK = 1.418MHz
#define FREQ_16KHZ 0x24 // BITCLK = 1.024MHz
#define FREQ_11KHZ 0x34 // BITCLK = 708.92KHz
#define FREQ_8KHZ 0x48 // BITCLK = 512.00KHz
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -