📄 wm9712.h
字号:
/*
* Register bits for Wolfson WM97xx series of codecs
*/
#ifndef _WM97XX_H_
#define _WM97XX_H_
/*
* WM97xx AC97 Touchscreen registers
*/
#define AC97_WM97XX_DIGITISER1 0x76
#define AC97_WM97XX_DIGITISER2 0x78
#define AC97_WM97XX_DIGITISER_RD 0x7a
#define WM97XX_PRP_DET_DIG 0xc000 /* pen detect on, digitiser on */
/*
* WM97xx register bits
*/
#define WM97XX_POLL 0x8000 /* initiate a polling measurement *///write 1 start measurement
#define WM97XX_ADCSEL_X 0x1000 /* x coord measurement *///取X轴坐标
#define WM97XX_ADCSEL_Y 0x2000 /* y coord measurement *///取Y轴坐标
#define WM97XX_ADCSEL_PRES 0x3000 /* pressure measurement *///电压测量
#define WM97XX_COO 0x0800 /* enable coordinate mode */单次传送或一次转X,Y
#define WM97XX_CTC 0x0400 /* enable continuous mode *///polling mode or DMA mode
#define WM97XX_CM_RATE_93 0x0000 /* 93.75Hz continuous rate *///cr-93k
#define WM97XX_CM_RATE_187 0x0100 /* 187.5Hz continuous rate *///cr-187k
#define WM97XX_CM_RATE_375 0x0200 /* 375Hz continuous rate */
#define WM97XX_CM_RATE_750 0x0300 /* 750Hz continuous rate */
#define WM97XX_CM_RATE_8K 0x00f0 /* 8kHz continuous rate */
#define WM97XX_CM_RATE_12K 0x01f0 /* 12kHz continuous rate */
#define WM97XX_CM_RATE_24K 0x02f0 /* 24kHz continuous rate */
#define WM97XX_CM_RATE_48K 0x03f0 /* 48kHz continuous rate *///cr-48k
#define WM97XX_DELAY(i) ((i << 4) & 0x00f0) /* sample delay times *///4-7bit
#define WM97XX_SLEN 0x0008 /* slot read back enable *///读寄存器还是SLOT
#define WM97XX_SLT(i) ((i - 5) & 0x7) /* touchpanel slot selection (5-11) *///SLOT NUMBER
#define WM97XX_PRP_DETW 0x4000 /* pen detect on, digitiser off, wake up */ 78H---15--14
#define WM97XX_PRP_DET 0x8000 /* pen detect on, digitiser off, no wake up */ 78H---15--14
#define WM97XX_RPR 0x2000 /* wake up on pen down */ 78H---13
#define WM97XX_PEN_DOWN 0x8000 /* pen is down *///7A pen down
/* WM9712 Bits */
#define WM9712_45W 0x1000 /* set for 5-wire touchscreen */
#define WM9712_PDEN 0x0800 /* measure only when pen down */ //78h---PDEN
#define WM9712_WAIT 0x0200 /* wait until adc is read before next sample */
#define WM9712_PIL 0x0100 /* current used for pressure measurement. set 400uA else 200uA */
#define WM9712_MASK_HI 0x0040 /* hi on mask pin (47) stops conversions */
#define WM9712_MASK_EDGE 0x0080 /* rising/falling edge on pin delays sample */
#define WM9712_MASK_SYNC 0x00c0 /* rising/falling edge on mask initiates sample */
#define WM9712_RPU(i) (i&0x3f) /* internal pull up on pen detect (64k / rpu) */
#define WM9712_ADCSEL_COMP1 0x4000 /* COMP1/AUX1 measurement (pin29) */
#define WM9712_ADCSEL_COMP2 0x5000 /* COMP2/AUX2 measurement (pin30) */
#define WM9712_ADCSEL_BMON 0x6000 /* BMON/AUX3 measurement (pin31) */
#define WM9712_ADCSEL_WIPER 0x7000 /* WIPER/AUX4 measurement (pin12) */
#define WM9712_PD(i) (0x1 << i) /* power management */
/* WM9712 Registers */
#define AC97_WM9712_POWER 0x24
#define AC97_WM9712_REV 0x58
/* AUX ADC ID's */
#define TS_COMP1 0x0
#define TS_COMP2 0x1
#define TS_BMON 0x2
#define TS_WIPER 0x3
/* ID numbers */
#define WM97XX_ID1 0x574d
#define WM9712_ID2 0x4c12
#define WM9705_ID2 0x4c05
#define WM9713_ID2 0x4c13
#define AC97_LINK_FRAME 21 /* time in uS for AC97 link frame */
/*********for z228*****************************/
#define AACI_BASE 0x20037000
#define AACI_RXCR1 0x000
#define AACI_TXCR1 0x004
#define AACI_SR1 0x008
#define AACI_ISR1 0x00C
#define AACI_IE1 0x010
#define AACI_RXCR2 0x014
#define AACI_TXCR2 0x018
#define AACI_SR2 0x01C
#define AACI_ISR2 0x020
#define AACI_IE2 0x024
#define AACI_RXCR3 0x028
#define AACI_TXCR3 0x02C
#define AACI_SR3 0x030
#define AACI_ISR3 0x034
#define AACI_IE3 0x038
#define AACI_RXCR4 0x03C
#define AACI_TXCR4 0x040
#define AACI_SR4 0x044
#define AACI_ISR4 0x048
#define AACI_IE4 0x04C
#define AACI_SL1RX 0x050
#define AACI_SL1TX 0x054
#define AACI_SL2RX 0x058
#define AACI_SL2TX 0x05C
#define AACI_SL12RX 0x060
#define AACI_SL12TX 0x064
#define AACI_SLFR 0x068
#define AACI_SLISTAT 0x06C
#define AACI_SLIEN 0x070
#define AACI_INTCLR 0x074
#define AACI_MAINCR 0x078
#define AACI_RESET 0x07C
#define AACI_SYNC 0x080
#define AACI_ALLINTS 0x084
#define AACI_MAINFR 0x088
#define AACI_DR1 0x090
#define AACI_DR2 0x0B0
#define AACI_DR3 0x0D0
#define AACI_DR4 0x0F0
#define AACI_PERID1 0xFE0
// AACI Bits
#define AACI_RXFEN 0x10000 // Bit 16 FIFO enable
// AACI Slot status bits
#define AACI_SL1TXBUSY 0x0002
#define AACI_SL2TXBUSY 0x0008
// AACI FIFO status bits
#define AACI_RXFE 0x0001
#define AACI_TXFE 0x0002
#define AACI_RXFF 0x0010
#define AACI_TXFF 0x0020
// AACI Control registers
#define AACI_MSTRVOL 0x02//声道
#define AACI_TLLOVOL 0x04
#define AACI_PCBEEP 0x0A
#define AACI_MICVOL 0x0E
#define AACI_LINEINVOL 0x10
#define AACI_PCMOVOL 0x18
#define AACI_RECSEL 0x1A
#define AACI_RECGAIN 0x1C
#define AACI_GPR 0x20
// Loopback test limits
#define MINSIGNAL 0xD0000 // Allow for gain errors
#define MAXSIGNAL 0x00300 // Wideband noise level (mostly >= 48kHz)
#define RECLENGTH 48000 // 1 Second recording (48kHz), see note in AACI_Recording()
//#define AACI_TIMEOUT 1000 // Timeout for reading FIFOs (10mS)
#define AACI_TIMEOUT 10000 // Timeout for reading FIFOs (10mS)
#define TONETIME 500 // Loop back test tone time
//
#define TRUE 1
#define FALSE 0
//Test Reg
#define AACI_TCR ((volatile int *)(AACI_BASE + 0x180))
/*********************************************************/
// Size of the AACI hardware register space
#define AACI_HWREGS_SIZE 0x1000
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -