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

📄 ad1852_spi_init.asm

📁 语音信号进行Fir滤波
💻 ASM
字号:
/********************************************************************************
*                                                                               *
*   AD1852 SPI slave initialization for the 21161 EZ-KIT Lite                   *
*																				*
*                                                                               *
*********************************************************************************/
	
/* ADSP-21161 System Register bit definitions */
#include 	"def21161.h"
.GLOBAL		Init_AD1852_DACs;

// AD1852 DAC SPI control/volume register definitions
#define		VOLUME_LEFT		0x0
#define		VOLUME_RIGHT	0x2
#define		CONTROL_REG		0x1

// AD1852 control word parameters
#define		DEASSERT_RESET	0x0000
#define		INTERP2xMODE	0x0800
#define		INTERP4xMODE	0x0400
#define		WL_24_BIT_DATA	0x0000
#define		WL_20_BIT_DATA	0x0100
#define		WL_16_BIT_DATA	0x0200
#define		RESET_AD1852	0x0080
#define		SOFT_MUTE		0x0040
#define		RIGHT_JUSTIFIED	0x0000
#define		I2S_JUSTIFIED	0x0010
#define		LEFT_JUSTIFIED	0x0020
#define		DSP_SERIAL		0x0030
#define		NO_DEMPH_FILTER	0x0000
#define		FILTER_44_1_kHz	0x0004
#define		FILTER_32_kHz	0x0008
#define		FILTER_48_kHz	0x000C	

.SECTION/DM	dm_data;
.var spi_tx_buf[5] =	RESET_AD1852 | CONTROL_REG, 	// reset AD1852
						DEASSERT_RESET | CONTROL_REG,	// remove reset command
						WL_24_BIT_DATA | I2S_JUSTIFIED | NO_DEMPH_FILTER | CONTROL_REG, 
                       	0x00FC | VOLUME_LEFT, 
						0x00FC | VOLUME_RIGHT;

.SECTION/pm pm_code;

Init_AD1852_DACs:
		r0=0x00000000;						// initially clear SPI control register
		dm(SPICTL)=r0;

SPIDMA_setup:
		r0=spi_tx_buf; 		dm(IISTX)=r0;
		r0=1;				dm(IMSTX)=r0;
		r0=@spi_tx_buf;		dm(CSTX)=r0;

		bit set LIRPTL SPITMSK;				// enable SPI TX interrupts
		bit set MODE1 IRPTEN;				// allow global interrupts
		bit set IMASK LPISUMI;				// unmask spi interrupts

		/* configure SPI port for interface to the AD1852 */
		ustat1=dm(SPICTL);       						 
		bit set ustat1 SPIEN|SPTINT|TDMAEN|SPI_MS|FLS1|CPHASE|DF|WL16|BAUDR4|PSSE|DCPH0|SGN|GM; 
		bit clr ustat1 CP|FLS0|FLS2|FLS3|NSMLS|DMISO|OPD|PACKEN|SENDZ|RDMAEN|SPRINT;
		dm(SPICTL) = ustat1;				//enable SPI port
	
DAC_init_not_done_yet:
//		idle;		
		R1 = DMA9ST;						// Test for SPITX DMA completion
		R0 = DM(DMASTAT);
		R0 = R0 AND R1;
		IF NE jump DAC_init_not_done_yet;

		bit clr LIRPTL SPITMSK;				// enable SPI TX interrupts
		bit clr IMASK LPISUMI;				// unmask spi interrupts

		R0 = 0;		DM(SPICTL) = R0;		// disable SPI Port
		
		RTS;
Init_AD1852_DACs.end:

⌨️ 快捷键说明

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