?? lib.h
字號:
/***************************************************************************\
Copyright (c) 2004-2007 threewater@up-tech.com, All rights reserved.
by threewter 2004.4.26
\***************************************************************************/
/***************************************************************************\
#說明: C庫函數(shù)定義頭文件
---------------------------------- Bug --------------------------------------
---------------------------------- TODO list --------------------------------------
----------------------------------修正--------------------------------------
2004-5-2 1、為調(diào)試和內(nèi)核的輸出,添加TRACE和printk宏定義
2、定義mdelay宏,毫秒級延時
3、添加版本號的定義MAJOR, MINOR, BUILD VERSION
2004-4-30 1、添加CONSOLE宏定義,可以定義串口輸出的控制臺
2、定義CONSOLE_PUTC宏,作為標(biāo)準(zhǔn)控制臺輸出宏。
printf 時被fputc調(diào)用
3、添加Uart_SendChar函數(shù),如果發(fā)送'\n'則自動發(fā)送'\r',
適合于控制臺輸出
2004-4-26 創(chuàng)建
\***************************************************************************/
#ifndef __LIB_H__
#define __LIB_H__
#include "io.h"
#include "sysdrv.h" //驅(qū)動抽象層頭文件
#include "../inc/macro.h"
//#include "../src/fs/osfile.h"
//#include "loadfile.h"
/***********************Version define***************************************/
#define MAJOR_VERSION 1
#define MINOR_VERSION 0
#define BUILD_VERSION 1
#define VERSION ((MAJOR_VERSION)|(MINOR_VERSION<<8)|(BUILD_VERSION<<16))
#define VERSION_STR "Build Version %d.%d.%4.4d\n", MAJOR_VERSION,MINOR_VERSION,BUILD_VERSION
/***********************console define***************************************/
#define CONSOLE 0
//for debug
#define TRACE printf
//for kernel information output
#define printk printf
void printfNULL(char *fmt, ...);
#define getchartimeout(buffer, n, timeout) Uart_GetchTimeout(CONSOLE, (char*)buffer, n, timeout*30)
#define Uart_SendChar(nUart, ch) do{if((ch)=='\n') Uart_SendByte((nUart), '\r'); \
Uart_SendByte((nUart), (ch)); }while(0)
//從控制臺所在的串口,獲得輸入的字符串
//#define GetCommand(string) Uart_GetString(CONSOLE, string);
//定義標(biāo)準(zhǔn)控制臺輸出函數(shù)
#define CONSOLE_PUTC(ch) Uart_SendChar(CONSOLE, (ch))
//定義標(biāo)準(zhǔn)控制臺輸入函數(shù)
#define CONSOLE_GETC() Uart_Getch(CONSOLE)
/***********************System define***************************************/
extern unsigned int PCLK, HCLK, FCLK;
/***********************System param define*********************************/
/*struct struct_system_param{
unsigned int magic;
calibrate_MATRIX calibrate_matrix;
};*/
extern struct struct_system_param system_param;
/***********************macro define***************************************/
#define mdelay(n) hudelay(n*10)
/***********************function define***************************************/
typedef void (*serial_loop_func_t)(void);
/***********************arm define***************************************/
#define FlushCache() __asm{mcr p15, 0, r0, c7, c7, 0}
/*lib.c*/
void hudelay(int time); //Watchdog Timer is used.
void Port_Init(void);
int GetCommand(char *command, int len);
int Uart_Init(int whichUart,int baud);
void Uart_RxEmpty(int whichUart);
void Uart_TxEmpty(int whichUart);
int Set_UartLoopFunc(serial_loop_func_t func);
int Clear_UartLoopFunc(int index);
char Uart_Getch(int whichUart);
int Uart_GetchTimeout(int whichUart, char* pbuffer, int n, int timeout);
int Uart_Poll(int whichUart);
int Uart_SendByte(int whichUart, int data);
void Uart_GetString(int whichUart, char *string);
int Uart_GetIntNum(int whichUart);
void Uart_Printf(int whichUart, char *fmt,...);
void Uart_SendString(int whichUart, char *pt);
int Set_UartLoopFunc(serial_loop_func_t func);
int Clear_UartLoopFunc(int index);
void loadsystemParam(void);
#define DEF_VOLUME 100
/* UDA1341 Register bits */
#define UDA1341_ADDR 0x14
#define UDA1341_REG_DATA0 (UDA1341_ADDR + 0)
#define UDA1341_REG_STATUS (UDA1341_ADDR + 2)
/* status control */
#define STAT0 (0x00)
#define STAT0_RST (1 << 6)
#define STAT0_SC_MASK (3 << 4)
#define STAT0_SC_512FS (0 << 4)
#define STAT0_SC_384FS (1 << 4)
#define STAT0_SC_256FS (2 << 4)
#define STAT0_IF_MASK (7 << 1)
#define STAT0_IF_I2S (0 << 1)
#define STAT0_IF_LSB16 (1 << 1)
#define STAT0_IF_LSB18 (2 << 1)
#define STAT0_IF_LSB20 (3 << 1)
#define STAT0_IF_MSB (4 << 1)
#define STAT0_IF_LSB16MSB (5 << 1)
#define STAT0_IF_LSB18MSB (6 << 1)
#define STAT0_IF_LSB20MSB (7 << 1)
#define STAT0_DC_FILTER (1 << 0)
#define STAT0_DC_NO_FILTER (0 << 0)
#define STAT1 (0x80)
#define STAT1_DAC_GAIN (1 << 6) /* gain of DAC */
#define STAT1_ADC_GAIN (1 << 5) /* gain of ADC */
#define STAT1_ADC_POL (1 << 4) /* polarity of ADC */
#define STAT1_DAC_POL (1 << 3) /* polarity of DAC */
#define STAT1_DBL_SPD (1 << 2) /* double speed playback */
#define STAT1_ADC_ON (1 << 1) /* ADC powered */
#define STAT1_DAC_ON (1 << 0) /* DAC powered */
/* data0 direct control */
#define DATA0 (0x00)
#define DATA0_VOLUME_MASK (0x3f)
#define DATA0_VOLUME(x) (x)
#define DATA1 (0x40)
#define DATA1_BASS(x) ((x) << 2)
#define DATA1_BASS_MASK (15 << 2)
#define DATA1_TREBLE(x) ((x))
#define DATA1_TREBLE_MASK (3)
#define DATA2 (0x80)
#define DATA2_PEAKAFTER (0x1 << 5)
#define DATA2_DEEMP_NONE (0x0 << 3)
#define DATA2_DEEMP_32KHz (0x1 << 3)
#define DATA2_DEEMP_44KHz (0x2 << 3)
#define DATA2_DEEMP_48KHz (0x3 << 3)
#define DATA2_MUTE (0x1 << 2)
#define DATA2_FILTER_FLAT (0x0 << 0)
#define DATA2_FILTER_MIN (0x1 << 0)
#define DATA2_FILTER_MAX (0x3 << 0)
/* data0 extend control */
#define EXTADDR(n) (0xc0 | (n))
#define EXTDATA(d) (0xe0 | (d))
#define EXT0 0
#define EXT0_CH1_GAIN(x) (x)
#define EXT1 1
#define EXT1_CH2_GAIN(x) (x)
#define EXT2 2
#define EXT2_MIC_GAIN_MASK (7 << 2)
#define EXT2_MIC_GAIN(x) ((x) << 2)
#define EXT2_MIXMODE_DOUBLEDIFF (0)
#define EXT2_MIXMODE_CH1 (1)
#define EXT2_MIXMODE_CH2 (2)
#define EXT2_MIXMODE_MIX (3)
#define EXT4 4
#define EXT4_AGC_ENABLE (1 << 4)
#define EXT4_INPUT_GAIN_MASK (3)
#define EXT4_INPUT_GAIN(x) ((x) & 3)
#define EXT5 5
#define EXT5_INPUT_GAIN(x) ((x) >> 2)
#define EXT6 6
#define EXT6_AGC_CONSTANT_MASK (7 << 2)
#define EXT6_AGC_CONSTANT(x) ((x) << 2)
#define EXT6_AGC_LEVEL_MASK (3)
#define EXT6_AGC_LEVEL(x) (x)
/***************************************************************/
#define rDISRC2 (*(volatile unsigned *)0x4B000080)
#define rDISRCC2 (*(volatile unsigned *)0x4B000084)
#define rDIDST2 (*(volatile unsigned *)0x4B000088)
#define rDIDSTC2 (*(volatile unsigned *)0x4B00008C)
#define rDCON2 (*(volatile unsigned *)0x4B000090)
#define rDSTAT2 (*(volatile unsigned *)0x4B000094)
#define rDCSRC2 (*(volatile unsigned *)0x4B000098)
#define rDCDST2 (*(volatile unsigned *)0x4B00009C)
#define rDMASKTRIG2 (*(volatile unsigned *)0x4B0000A0)
/* IIS */
#define rIISCON (*(volatile unsigned *)0x55000000)
#define rIISMOD (*(volatile unsigned *)0x55000004)
#define rIISPSR (*(volatile unsigned *)0x55000008)
#define rIISFCON (*(volatile unsigned short *)0x5500000c)
#define rIISFIF (*(volatile unsigned short *)0x55000010)
#define IISCON_RIGHT_INDEX 0x100 //Right Channel
#define IISCON_TXFIFO_NE 0x80 //Transmit FIFO not empty flag
#define IISCON_RXFIFO_NE 0x40 //Transmit FIFO not empty flag
#define IISCON_TXDMA 0x20 //Transmit DMA service request enable
#define IISCON_RXDMA 0x10 //Receive DMA service request enable
#define IISCON_TXIDLE 0x08 //Transmit channel idle
#define IISCON_RXIDLE 0x04 //Receive channel idle
#define IISCON_PRESCALE 0x02 //IIS prescaler enable
#define IISCON_ENABLE 0x01 //IIS interface enable(start)
#define IISMOD_SLAVE 0x100 //slave mode select
#define IISMOD_TX 0x80 //Transmit mode
#define IISMOD_RX 0x40 //receive mode
#define IISMOD_RACTIVE 0x20 //Active level of right
#define IISMOD_MSBJ 0x10 //MSB-justified Serial interface format
#define IISMOD_16BIT 0x08 //Serial data 16bit per channel
#define IISMOD_MCLK_384FS 0x04 //Master clock frequency
#define IISMOD_32FS 0x01 //Serial bit clock frequency=32fs
#define IISMOD_48FS 0x02 //Serial bit clock frequency=48fs
#define IISFCON_TXDMA 0x800 //Transmit FIFO access DMA mode
#define IISFCON_RXDMA 0x400 //Receive FIFO access DMA mode
#define IISFCON_TXFIFO 0x200 //Transmit FIFO enable
#define IISFCON_RXFIFO 0x100 //Receive FIFO enable
#define AUDIO_CLK 44100 //44.1KHz的音頻時鐘
#define AUDIO_BIT 16 //16位音頻
#define AUDIO_OUT_BUFFERSIZE (AUDIO_CLK/2) //500ms的緩沖區(qū)
#define AUDIO_IN_BUFFERSIZE (AUDIO_CLK/2) //500ms的緩沖區(qū)
#define AUDIO_OUT_BUFFERSIZE_B (AUDIO_OUT_BUFFERSIZE*4)
#define AUDIO_IN_BUFFERSIZE_B (AUDIO_IN_BUFFERSIZE*4)
///////////////////////////UDA1341/////////////////////////////////////////////////
#define UDA1341_MODE (1<<8)
#define UDAADDR 0x14 //UDA1341 address
#define UDA_DATA0 0x00 //UDA1341 data0
#define UDA_DATA1 0x01 //UDA1341 data1
#define UDA_STATUS 0x02 //UDA1341 status
#define UDASTATUS0_RST 0x40 //UDA1341 status reset
#define UDASTATUS0_SC512 0x00 //UDA1341 status SC
#define UDASTATUS0_SC384 0x10 //UDA1341 status SC
#define UDASTATUS0_SC256 0x20 //UDA1341 status SC
#define UDASTATUS0_IIS 0x00 //UDA1341 status IF2-0=0 IIS
#define UDASTATUS0_DC 0x01 //UDA1341 status DC-filtering
#define UDASTATUS1_OGS6 (0x80|0x40) //UDA1341 status gain of DAC 6dB
#define UDASTATUS1_IGS6 (0x80|0x20) //UDA1341 status gain of ADC 6dB
#define UDASTATUS1_PADINV (0x80|0x10) //UDA1341 status ADC inverting
#define UDASTATUS1_PDAINV (0x80|0x08) //UDA1341 status DAC inverting
#define UDASTATUS1_DBSPD (0x80|0x04) //UDA1341 status double speed
#define UDASTATUS1_ADCON (0x80|0x02) //UDA1341 status ADC on
#define UDASTATUS1_DACON (0x80|0x01) //UDA1341 status DAC on
#define UDADATA0_VOL 0x00 //UDA1341 data0 volume value 6bit
#define L3CLK (1<<9)
#define L3DATA (1<<10)
#define GPIO_L3CLOCK (GPIO_MODE_OUT | GPIO_PULLUP_DIS | GPIO_G9)
#define GPIO_L3DATA (GPIO_MODE_OUT | GPIO_PULLUP_DIS | GPIO_G10)
#define GPIO_L3MODE (GPIO_MODE_OUT | GPIO_PULLUP_DIS | GPIO_G8)
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -