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

📄 i2scontrol.h

📁 NXP LPC3000系列 wince BSP包
💻 H
字号:
#pragma once

#include <windows.h>
#include "wavedir.h"
#include "lpc32xx_clkpwr.h"
#include "lpc32xx_i2s.h"
#include "lpc32xx_gpio.h"

class I2SControl
{
public:
	//********************************************************************
	// Initialization and de-init functions
	//********************************************************************

	// Constructors
	I2SControl(void);

	// Destructor
	~I2SControl();

	// Returns initialized 'good' status after construction
	DWORD I2SInitGood(void);

	// Set direction for this instances
	void I2SSetDirection(I2S_CH_T ch);

	//********************************************************************
	// General audio setup functions
	//********************************************************************

	// Set source for stereo or mono
	DWORD I2SSetStereo(DWORD stereo);

	// Get stereo flag
	DWORD I2SGetStereo(void);

	// Flush the current FIFO, used prior to starting an audio stream to
	// prevent audio pops
	DWORD I2SFlushFIFO(void);

	// Pause or unpause stream
	DWORD I2SPause(DWORD pause);

	// Returns paused status of stream
	DWORD I2SIsPaused(void);

	// Mute (via I2S peripheral)
	DWORD I2SMute(DWORD mute);

	// Get mute status
	DWORD I2SIsMuted(void);

	// Diagnostic function for dumping current I2S registers
	void I2SDumpRegs(void);

protected:
	// Sets up data sample rate - both output and input are rate locked
	// so setting one sample rate will affect both input and output,
	// returns actual sample rate
	DWORD I2SSetSampleRate(DWORD wsrate,
		                   DWORD bits);

	// Get current sample rate - both output and input are rate locked
	DWORD I2SGetSampleRate(void);

	// Get the current sample size in bits
	DWORD I2SGetSampleSize(void);

private:
	// Number of instances
	static int m_I2Sinstances;

	// Safe initialization flag
	static DWORD m_I2Sgoodinit;

	// Allocated pointer to register regions
	static CLKPWR_REGS_T *m_I2SpClkPwrRegs;
	static I2S_REGS_T *m_I2SpI2SRegs;

	// Various saved values
	DWORD m_I2SStereoFlag;
	DWORD m_I2SSampleRate;
	DWORD m_I2SSampleSize;
	DWORD m_I2SPauseFlag;
	DWORD m_I2SMuteFlag;

	// Direction for this instance
	I2S_CH_T m_I2SchanDir;

	//********************************************************************
	// Miscellaneous functions
	//********************************************************************

	// Returns absolute value 
	int I2SABS(int v1,
		       int v2);

	// Determines bit rate clock to generate WS rate, returns actual bit
	// rate for the generated dividers
	DWORD I2SClkGetDivs(UINT32 rate,
		                UINT32 samplebits,
						UINT32 *divx,
						UINT32 *divy);
};

⌨️ 快捷键说明

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