📄 talkthrough.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 + -