📄 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.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -