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

📄 talkthrough.h

📁 通过BF561双核处理系统
💻 H
字号:
#ifndef  __Talkthrough_DEFINED
	#define __Talkthrough_DEFINED

//--------------------------------------------------------------------------//
// single vs dual core operation											//
//--------------------------------------------------------------------------//
//#define RUN_ON_SINGLE_CORE		// comment out if dual core operation is desired


//--------------------------------------------------------------------------//
// Header files																//
//--------------------------------------------------------------------------//
#include <sys\exception.h>
#include <cdefBF561.h>
#include <ccblkfn.h>
#include <sysreg.h>
#include <fract.h>
#include <filter.h>
#include "btc.h"

//-------------------
//FIR parameters
//-------------------
#define NUM_TAPS 103 // FIR滤波器的阶数

#define VEC_SIZE (NUM_TAPS*80)	// length of the input vector

//--------------------------------------------------------------------------//
// Symbolic constants														//
//--------------------------------------------------------------------------//
// AD1836 reset PF15
#define AD1836_RESET_bit 15

// names for codec registers, used for iCodec1836TxRegs[]
#define DAC_CONTROL_1		0x0000
#define DAC_CONTROL_2		0x1000
#define DAC_VOLUME_0		0x2000
#define DAC_VOLUME_1		0x3000
#define DAC_VOLUME_2		0x4000
#define DAC_VOLUME_3		0x5000
#define DAC_VOLUME_4		0x6000
#define DAC_VOLUME_5		0x7000
#define ADC_0_PEAK_LEVEL	0x8000
#define ADC_1_PEAK_LEVEL	0x9000
#define ADC_2_PEAK_LEVEL	0xA000
#define ADC_3_PEAK_LEVEL	0xB000
#define ADC_CONTROL_1		0xC000
#define ADC_CONTROL_2		0xD000
#define ADC_CONTROL_3		0xE000

// names for slots in ad1836 audio frame
#define INTERNAL_ADC_L0			0
#define INTERNAL_ADC_L1			1
#define INTERNAL_ADC_R0			4
#define INTERNAL_ADC_R1			5
#define INTERNAL_DAC_L0			0
#define INTERNAL_DAC_L1			1
#define INTERNAL_DAC_L2			2
#define INTERNAL_DAC_R0			4
#define INTERNAL_DAC_R1			5
#define INTERNAL_DAC_R2			6

// size of array iCodec1836TxRegs and iCodec1836RxRegs
#define CODEC_1836_REGS_LENGTH	11

// SPI transfer mode
#define TIMOD_DMA_TX 0x0003

// SPORT0 word length
#define SLEN_32	0x001f
#define SLEN_16 0x000f

// DMA flow mode
#define FLOW_1	0x1000
#define FLOW_LARGE 0x7000
#define NDSIZE_LARGE	0x0900


//--------------------------------------------------------------------------//
// Global variables															//
//--------------------------------------------------------------------------//
extern fract16 iChannel0LeftIn;
extern fract16 iChannel0RightIn;
extern fract16 iChannel0LeftOut;
extern fract16 iChannel0RightOut;
extern fract16 iChannel1LeftIn;
extern fract16 iChannel1RightIn;
extern fract16 iChannel1LeftOut;
extern fract16 iChannel1RightOut;
extern volatile short sCodec1836TxRegs[];
extern fract16 iRxBuffer0[];
extern fract16 iTxBuffer0[];
extern fract16 iRxBuffer1[];
extern fract16 iTxBuffer1[];
//FIR
extern fract16 coefs[NUM_TAPS];
extern fract16 delay[NUM_TAPS+NUM_TAPS];
extern fir_state_fr16 state;	
//--------------------------------------------------------------------------//
// DMA Operation                                                            //
//--------------------------------------------------------------------------//
typedef struct {
	unsigned long next_desc_ptr;	/* DMA Next Descriptor Pointer register */
	unsigned long start_addr;	/* DMA Start address  register */

	unsigned short cfg;	/* DMA Configuration register */
	unsigned short x_count;	/* DMA x_count register */
	unsigned short x_modify;	/* DMA x_modify register */
	unsigned short y_count;	/* DMA y_count register */
	unsigned short y_modify;	/* DMA y_modify register */
	} dma_register_t;

extern dma_register_t pDmaDescR0;
extern dma_register_t pDmaDescT0;
extern dma_register_t pDmaDescR1;
extern dma_register_t pDmaDescT1;
extern int dmaFlag;

//--------------------------------------------------------------------------//
// Prototypes																//
//--------------------------------------------------------------------------//
// in file Initialisation.c
void Init_EBIU(void);
void Init_Flash(void);
void Init1836(void);
void Init_Sport0(void);
void Init_DMA(void);
void Init_Sport_Interrupts(void);
void Enable_DMA_Sport(void);
void Enable_DMA_Sport0(void);


void firStereo(fract16 *,fract16 *,int,fir_state_fr16 *);
void Process_Data(void);


// in file ISRs.c
EX_INTERRUPT_HANDLER(Sport0_RX_ISR);

#endif //__Talkthrough_DEFINED

⌨️ 快捷键说明

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