www.pudn.com > DSP28_Sci.rar > DSP28_Sci.c


/************************************************************************************* 
** 文件名:DSP28_Sci.c 
 
** Copyright (c) 2006-2006 CHEM 
 
** 创建人:辛书辉 
 
** 日  期:2006-10-01 
 
** 修改人:辛书辉 
 
** 日  期:2006-10-01 
 
** 版  本:DSP2812.1 
 
** 用  途: DSP28 SCI. 
 
** 范  围: Initialization & Support Functions. 
 
*************************************************************************************/ 
 
#include "DSP28_Device.h" 
 
//--------------------------------------------------------------------------- 
// 初始化OCS主机RS232通讯接口 
// 
void InitSciA(void) 
{ 
	EALLOW; 
	GpioMuxRegs.GPFMUX.all		= 0x0030; 
 
	EDIS; 
	SciaRegs.SCICCR.all		= 0x07;		// 1 bit stop, no parity, idle mode, 8 bits data  
	SciaRegs.SCICTL1.all		= 0x03;		// enable TX  
	SciaRegs.SCICTL2.all		= 0x03;		// 
 
// BAUD = X1 * 5 / 4 / SCI / 8 - 1; 
//	SciaRegs.SCIHBAUD		= 0x01; 
//	SciaRegs.SCILBAUD		= 0x67;		// 22.1184M_9600 
	 
//	SciaRegs.SCIHBAUD		= 0x00; 
//	SciaRegs.SCILBAUD		= 0xB3;		// 22.1184M_19200 
	 
	SciaRegs.SCIHBAUD		= 0x00; 
	SciaRegs.SCILBAUD		= 0x1D;		// 22.1184M_115200			 
	 
	SciaRegs.SCICTL1.all		= 0x23; 
	 
	PieCtrl.PIEIER9.bit.INTx1	= 1;		// enable rx_int 
	PieCtrl.PIEIER9.bit.INTx2	= 1;		// enable tx_int 
} 
 
//--------------------------------------------------------------------------- 
// 初始化测速仪RS422通讯接口 
// 
void InitSciB(void) 
{ 
	EALLOW; 
	GpioMuxRegs.GPGMUX.all		= 0x0030; 
 
	EDIS; 
	ScibRegs.SCICCR.all		= 0x86;		// 2 bits stop, no parity, idle mode, 7 bits data  
	 
	ScibRegs.SCICTL1.all		= 0x03;		// enable TX  
	ScibRegs.SCICTL2.all		= 0x03;		// 
	 
// BAUD = X1 * 5 / 4 / SCI / 8 - 1; 
//	ScibRegs.SCIHBAUD		= 0x01; 
//	ScibRegs.SCILBAUD		= 0x67;		// 22.1184M_9600 
	 
//	ScibRegs.SCIHBAUD		= 0x00; 
//	ScibRegs.SCILBAUD		= 0xB3;		// 22.1184M_19200 
	 
	ScibRegs.SCIHBAUD		= 0x00; 
	ScibRegs.SCILBAUD		= 0x1D;		// 22.1184M_115200			 
	 
	ScibRegs.SCICTL1.all		= 0x23; 
	 
	PieCtrl.PIEIER9.bit.INTx3	= 1;		// enable rx_int 
	PieCtrl.PIEIER9.bit.INTx4	= 1;		// enable tx_int 
} 
 
//--------------------------------------------------------------------------- 
// 初始化串行通讯接口 
// 
void InitSci(void) 
{ 
	InitSciA();					// 初始化OCS主机RS232通讯串口 
	InitSciB();					// 初始化激光测速仪RS422通讯串口 
} 
 
//--------------------------------------------------------------------------- 
// 检查OCS主机RS232发送是否完成 
// 返回:1=完成,0=忙 
// 
int SciaTx_Ready(void) 
{ 
	return (SciaRegs.SCICTL2.bit.TXRDY == 1)? 1: 0; 
} 
 
//--------------------------------------------------------------------------- 
// 检查OCS主机RS232接收缓冲区是否准备好读取 
// 返回:1=有新数据,0=无数据 
// 
int SciaRx_Ready(void) 
{ 
	return (SciaRegs.SCIRXST.bit.RXRDY == 1)? 1: 0; 
} 
 
//--------------------------------------------------------------------------- 
// 检查激光测速仪RS422发送是否完成 
// 返回:1=完成,0=忙 
// 
int ScibTx_Ready(void) 
{ 
	return (ScibRegs.SCICTL2.bit.TXRDY == 1)? 1: 0; 
} 
 
//--------------------------------------------------------------------------- 
// 检查激光测速仪RS422接收缓冲区是否准备好读取 
// 返回:1=有新数据,0=无数据 
// 
int ScibRx_Ready(void) 
{ 
	return (ScibRegs.SCIRXST.bit.RXRDY == 1)? 1: 0; 
}	 
	 
//=========================================================================== 
// No more. 
//===========================================================================