?? dec5416.c
字號(hào):
/*********************************************************************************
*DEC5416.C v1.00 *
* 版權(quán)(c) 2003- 北京合眾達(dá)電子技術(shù)有限責(zé)任公司 *
* 設(shè)計(jì)者: 段立鋒 *
*********************************************************************************/
#include "type.h"
#include "sysreg.h"
#include "codec.h"
#include "mcbsp54.h"
#include "dma54xx.h"
#define MCBSP0_SPSA 0x0038u
#define MCBSP0_SPSD 0x0039u
#define MCBSP1_SPSA 0x0048u
#define MCBSP1_SPSD 0x0049u
#define MCBSP2_SPSA 0x0034u
#define MCBSP2_SPSD 0x0035u
#define MCBSP_SPCR1_SUB_ADDR 0x0000u
#define MCBSP_SPCR2_SUB_ADDR 0x0001u
#define MCBSP_RCR1_SUB_ADDR 0x002
#define MCBSP_RCR2_SUB_ADDR 0x003
#define MCBSP_XCR1_SUB_ADDR 0x004
#define MCBSP_XCR2_SUB_ADDR 0x005
#define MCBSP_SRGR1_SUB_ADDR 0x0006u
#define MCBSP_SRGR2_SUB_ADDR 0x0007u
#define MCBSP_MCR1_SUB_ADDR 0x0008u
#define MCBSP_MCR2_SUB_ADDR 0x0009u
#define SRGR1_INIT 0x0001u
#define MCBSP_PCR_SUB_ADDR 0x00E
/*系統(tǒng)緩沖區(qū)的定義:
*系統(tǒng)緩沖區(qū)的定義:
*第0~3個(gè)字節(jié):串口通路A的寄存器緩沖
*第4個(gè)字節(jié):5個(gè)字節(jié):串口通路B的寄存器緩沖
*第6~7個(gè)字節(jié):系統(tǒng)寄存器的讀寫緩沖
*第8個(gè)字節(jié) :A通路接收緩沖區(qū)每次接收的長(zhǎng)度
*第9個(gè)字節(jié) :B通路接收緩沖區(qū)第次接收的長(zhǎng)度
*第10個(gè)字節(jié) :A通路當(dāng)前接收緩沖區(qū)的地址
*第11個(gè)字節(jié) :B通路當(dāng)前接收緩沖區(qū)的地址
*第12個(gè)字節(jié) :A通路的FIFO的深度
*第13個(gè)字節(jié) : B通路的FIFO的深度
*第14個(gè)字節(jié) :UART的狀態(tài)區(qū)
*第15個(gè)字節(jié) :A通路數(shù)據(jù)準(zhǔn)備好
*第16個(gè)字節(jié) :B通路數(shù)據(jù)準(zhǔn)備好
*第17個(gè)字節(jié) :A通路出現(xiàn)故障
*第18個(gè)字節(jié) :B通路出現(xiàn)故障
*第19個(gè)字節(jié) : A通路已接收的數(shù)據(jù)
*第20個(gè)字節(jié) : B通路已接收的數(shù)據(jù)
*第21個(gè)字節(jié) :A通路有新幀
*第22個(gè)字節(jié) :B通路有新幀
*第23個(gè)字節(jié) :A通路中斷超時(shí)
*第24個(gè)字節(jié) :B通路中斷超時(shí)
*第25個(gè)字節(jié) :A通路較驗(yàn)出錯(cuò)
*第26個(gè)字節(jié) :B通路較給出錯(cuò)
*第27個(gè)字節(jié) :系統(tǒng)的時(shí)鐘設(shè)置
*/
#define UARTA0 0x0
#define UARTA1 0x1
#define UARTA2 0x2
#define UARTA3 0x3
#define UARTB1 0x4
#define UARTB2 0x5
#define SYSB0 0x6
#define SYSB1 0x7
#define RECALON 0x8
#define RECBLON 0x9
#define RECAADDR 0xA
#define RECBADDR 0xB
#define FIFOADIP 0xC
#define FIFOBDIP 0xD
#define UARTSTAT 0xE
#define RECARDY 0xf
#define RECBRDY 0x10
#define UARTAERR 0x11
#define UARTBERR 0x12
#define UARTACOUNT 0x13
#define UARTBCOUNT 0x14
#define RECANEW 0x15
#define RECBNEW 0x16
#define UARTIMEA 0x17
#define UARTIMEB 0x18
#define UARTCHEKA 0x19
#define UARTCHEKB 0x1a
#define SYSCLOCKS 0x1b
#define MCBSP_CLKGDV 0x20 /*同步串口時(shí)鐘設(shè)置*/
#define MCBSP_CLK_SPI 0x1000 /*同步串口時(shí)鐘模式設(shè)置*/
/*系統(tǒng)狀態(tài)緩沖區(qū)*/
#pragma DATA_SECTION(sys_statbuff,".sys_buffer")
unsigned int sys_statbuff[32];
HANDLE codec_open(CodecId codec)
{
/*判斷是要打開(kāi)哪個(gè)MCBSP*/
if(codec == 0)
{
//unsigned int data;
/*打開(kāi)的是數(shù)據(jù)接口,初始化McBSP0*/
/****************************************************************/
/* Place port in reset - setting XRST & RRST to 0 */
/****************************************************************/
/*進(jìn)行發(fā)送復(fù)位*/
MCBSP_SUBREG_BITWRITE(codec, SPCR1_SUBADDR, RRST, RRST_SZ, 0);
/*進(jìn)行接收復(fù)位*/
MCBSP_SUBREG_BITWRITE(codec, SPCR2_SUBADDR, XRST, XRST_SZ, 0);
/****************************************************************/
/* Set values of all control registers */
/****************************************************************/
/*設(shè)置SPCR1寄存器*/
MCBSP_SUBREG_WRITE(codec, SPCR1_SUBADDR,0x4080);
//*(int *)MCBSP0_SPSA = MCBSP_SPCR1_SUB_ADDR;
//data = *(int *)MCBSP0_SPSD;
/*設(shè)置RCR1寄存器,單數(shù)據(jù)相,接受數(shù)據(jù)長(zhǎng)度為16位,每相2個(gè)數(shù)據(jù)*/
MCBSP_SUBREG_WRITE(codec, RCR1_SUBADDR, 0x140);
//*(int *)MCBSP0_SPSA = MCBSP_RCR1_SUB_ADDR;
//data = *(int *)MCBSP0_SPSD;
/*設(shè)置RCR2寄存器,單數(shù)據(jù)相
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -