📄 ad_inti.c
字号:
/******************************************************************************/
/* Copyright 2004 by SEED Electronic Technology LTD. */
/* All rights reserved. SEED Electronic Technology LTD. */
/* Restricted rights to use, duplicate or disclose this code are */
/* granted through contract. */
/* */
/* MODULE NAME... Mcbsp */
/* FILENAME...... comunication.c */
/* DESCRIPTION: */
/* This is an fuction which is just for comunication */
/* */
/* 作者:黄林生 */
/* 版本:1.0 */
/* 日期:06.10.24 */
/******************************************************************************/
#include <stdio.h>
#include <csl.h>
#include <csl_pll.h>
#include <csl_chip.h>
#include <csl_irq.h>
#include <csl_emif.h>
#include <csl_gpt.h>
#include <csl_emifBhal.h>
#include <csl_mcbsp.h>
#include "emif.h"
#include "mcbsp.h"
#include "type.h"
#include "protocol.h"
#include "DEC5502_MCBSP_inti.h"
#include "DEC5502_MCBSP_work.h"
#include "check.h"
#define SYSCNTL0 (*(volatile unsigned int *)(0x280000))
MCBSP_Handle hMcbsp1;
unsigned int adnum;
short TemDataR,TemDataL;
/*------------------------------------------------------------------------------------*/
//
// Config McBSP: Use McBSP to send and receive the data between DSP and AIC23B
//
/*------------------------------------------------------------------------------------*/
MCBSP_Config Mcbsp1Config = {
MCBSP_SPCR1_RMK(
MCBSP_SPCR1_DLB_OFF, // DLB = 0
MCBSP_SPCR1_RJUST_LZF, // RJUST = 0,right justify the data and zero fill the MSBs
MCBSP_SPCR1_CLKSTP_DISABLE, // CLKSTP = 0
MCBSP_SPCR1_DXENA_ON, // DXENA = 1,DX delay enabler on
0, // Reserved = 0
MCBSP_SPCR1_RINTM_RRDY, // RINTM = 0
MCBSP_SPCR1_RSYNCERR_NO, // RSYNCER = 0
MCBSP_SPCR1_RFULL_NO, // RFULL = 0
MCBSP_SPCR1_RRDY_NO, // RRDY = 0
MCBSP_SPCR1_RRST_DISABLE // RRST = 0; Disable receiver
),
MCBSP_SPCR2_RMK(
MCBSP_SPCR2_FREE_NO, // FREE = 0
MCBSP_SPCR2_SOFT_NO, // SOFT = 0
MCBSP_SPCR2_FRST_FSG, // FRST = 1 ; Enable the frame-sync logic
MCBSP_SPCR2_GRST_CLKG, // GRST = 1 ; The sample rate generator is take out of its reset state
MCBSP_SPCR2_XINTM_XRDY, // XINTM = 0
MCBSP_SPCR2_XSYNCERR_NO, // XSYNCER =0
MCBSP_SPCR2_XEMPTY_NO, // XEMPTY = 0
MCBSP_SPCR2_XRDY_NO, // XRDY = 0
MCBSP_SPCR2_XRST_DISABLE // XRST = 0 Disable transimitter
),
// 单数据相,接受数据长度为16位,每相1个数据
MCBSP_RCR1_RMK(
MCBSP_RCR1_RFRLEN1_OF(1), // RFRLEN1 = 1
MCBSP_RCR1_RWDLEN1_16BIT // RWDLEN1 = 2
),
MCBSP_RCR2_RMK(
MCBSP_RCR2_RPHASE_SINGLE, // RPHASE = 0
MCBSP_RCR2_RFRLEN2_OF(0), // RFRLEN2 = 0
MCBSP_RCR2_RWDLEN2_8BIT, // RWDLEN2 = 0
MCBSP_RCR2_RCOMPAND_MSB, // RCOMPAND = 0 No companding,any size data, MSB received first
MCBSP_RCR2_RFIG_YES, // RFIG = 1 Frame-sync ignore
MCBSP_RCR2_RDATDLY_1BIT // RDATDLY = 1 1-bit data delay
),
MCBSP_XCR1_RMK(
MCBSP_XCR1_XFRLEN1_OF(0), // XFRLEN1 = 1
MCBSP_XCR1_XWDLEN1_16BIT // XWDLEN1 = 2
),
MCBSP_XCR2_RMK(
MCBSP_XCR2_XPHASE_SINGLE, // XPHASE = 0
MCBSP_XCR2_XFRLEN2_OF(0), // XFRLEN2 = 0
MCBSP_XCR2_XWDLEN2_8BIT, // XWDLEN2 = 0
MCBSP_XCR2_XCOMPAND_MSB, // XCOMPAND = 0
MCBSP_XCR2_XFIG_YES, // XFIG = 1 Unexpected Frame-sync ignore
MCBSP_XCR2_XDATDLY_1BIT // XDATDLY = 1 1-bit data delay
),
MCBSP_SRGR1_DEFAULT,
MCBSP_SRGR2_DEFAULT,
MCBSP_MCR1_DEFAULT,
MCBSP_MCR2_DEFAULT,
MCBSP_PCR_RMK(
MCBSP_PCR_IDLEEN_RESET, // IDLEEN = 0
MCBSP_PCR_XIOEN_SP, // XIOEN = 0
MCBSP_PCR_RIOEN_SP, // RIOEN = 0
MCBSP_PCR_FSXM_EXTERNAL, // FSXM = 0 Tranmit frame-syn is provided by AIC23B
MCBSP_PCR_FSRM_EXTERNAL, // FSRM = 0 Receive frame-syn is provided by AIC23B
MCBSP_PCR_CLKXM_INPUT, // CLKR is input
MCBSP_PCR_CLKRM_INPUT, // CLKX is input
MCBSP_PCR_SCLKME_NO, // SCLKME=0 CLKG is taken from the McBSP internal input clock
MCBSP_PCR_CLKSSTAT_0, // The signal on the CLKS pin is low
MCBSP_PCR_DXSTAT_0, // Drive the signal on the DX pin low
MCBSP_PCR_DRSTAT_0, // The signal on the DR pin is low
MCBSP_PCR_FSXP_ACTIVEHIGH, // FSXP = 1 Because a falling edge on LRCIN or LRCOUT starts data transfer
MCBSP_PCR_FSRP_ACTIVELOW, // FSRP = 1
MCBSP_PCR_CLKXP_FALLING, // CLKXP = 1 The falling edge of BCLK starts data transfer
MCBSP_PCR_CLKRP_RISING // CLKRP = 1
),
MCBSP_RCERA_DEFAULT,
MCBSP_RCERB_DEFAULT,
MCBSP_RCERC_DEFAULT,
MCBSP_RCERD_DEFAULT,
MCBSP_RCERE_DEFAULT,
MCBSP_RCERF_DEFAULT,
MCBSP_RCERG_DEFAULT,
MCBSP_RCERH_DEFAULT,
MCBSP_XCERA_DEFAULT,
MCBSP_XCERB_DEFAULT,
MCBSP_XCERC_DEFAULT,
MCBSP_XCERD_DEFAULT,
MCBSP_XCERE_DEFAULT,
MCBSP_XCERF_DEFAULT,
MCBSP_XCERG_DEFAULT,
MCBSP_XCERH_DEFAULT
};
/********************************************************************************/
/* Functionname: void Emif_Config(void) */
/* Function: Realize emif configuration */
/********************************************************************************/
extern void Mcbsp1_Config()
{
// Open McBSP port 1 and get a McBSP type handle
hMcbsp1 = MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET);
MCBSP_reset(hMcbsp1);
// Config McBSP port 1 by use previously defined structure
MCBSP_config(hMcbsp1,&Mcbsp1Config);
// Start McBSP1
MCBSP_start(hMcbsp1,
MCBSP_RCV_START | MCBSP_XMIT_START,
0);
CHIP_RSET(XBSR,0x0005);//necessary
}
/********************************************************************************/
AD_sample( unsigned int ADlen,unsigned int* pnum)
{
/*采样*/
for(adnum = 0;adnum<(ADlen+520);adnum++)
{
while(!MCBSP_rrdy(hMcbsp1)){};
TemDataL = MCBSP_read16(hMcbsp1);
while(!MCBSP_rrdy(hMcbsp1)){};
TemDataR = MCBSP_read16(hMcbsp1);
if(adnum>=520)
*pnum++=TemDataR;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -