F281x-SCI和PC间的通讯

//###########################################################################
//

// FILE : 281x-SCI_PC.c

//
// TITLE: 281x-SCI和PC间的通讯 --- 查询方式,使用FIFO

// PC发送至串口,DSP再回送至PC //

//

// ASSUMPTIONS:
//
// As supplied, this project is configured for "boot to H0" operation.
// Other then boot mode pin configuration, no other hardware configuration is required.

//
//###########################################################################

# include "DSP281x_Device.h" // DSP281x Headerfile Include File
# include "DSP281x_Examples.h" // DSP281x Examples Include File

void scia_echoback_init(void);
void scia_fifo_init(void);
void scia_xmit(int a); //串口发送--数据
void scia_msg(char *msg); //串口发送--字符串

Uint16 LoopCount;


void main(void)
{

Uint16 ReceivedChar;
char *msg;

// Step 1. Initialize System Control:

InitSysCtrl();

// Step 2. Initalize GPIO:
// InitGpio(); //配置IO口功能为SCIA和SCIB模式

EALLOW;
GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4 = 1;
GpioMuxRegs.GPFMUX.bit.SCIRXDA_GPIOF5 = 1;
GpioMuxRegs.GPGMUX.bit.SCITXDB_GPIOG4 = 1;
GpioMuxRegs.GPGMUX.bit.SCIRXDB_GPIOG5 = 1;
EDIS;

// Step 3. Clear all interrupts and initialize PIE vector table:

DINT; // Disable CPU interrupts

InitPieCtrl(); //初始化PIE控制寄存器

IER = 0x0000;

IFR = 0x0000;

InitPieVectTable(); //初始化PIE中断向量表

// Step 4. Initialize all the Device Peripherals:

// InitPeripherals(); //初始化所有外设

// Step 5. User specific code:

scia_fifo_init();

scia_echoback_init();

//从PC上的串口调试助手输入要发送的数据至DSP

msg = "/r/nYou will enter a character, and the DSP will echo it back! /n/0";
scia_msg(msg);

for(;;)
{
msg = "/r/nEnter a character: /0";
scia_msg(msg);

// 查询方式--接收--使用FIFO
while(SciaRegs.SCIFFRX.bit.RXFIFST!=1) { } // wait for XRDY =1 for empty state
//XRDY =1 (空状态)等待数据发送
// 接收数据
ReceivedChar = SciaRegs.SCIRXBUF.all;

// Echo character back
msg = " You sent: /0";
scia_msg(msg);
scia_xmit(ReceivedChar); //串口发送函数

LoopCount++;

} //end for

} //end main


//SCI-A初始化
void scia_echoback_init()
{
//通信控制寄存器,1个停止位,无奇偶校验,自测试禁止,空闲线模式,字符长度8位
SciaRegs.SCICCR.all =0x0007;

//禁止接收错误中断,禁止休眠,使能发送,接收
SciaRegs.SCICTL1.all =0x0003;
SciaRegs.SCICTL2.all =0x0003;
SciaRegs.SCICTL2.bit.TXINTENA =1; //使能TXRDY中断
SciaRegs.SCICTL2.bit.RXBKINTENA =1; //接收缓冲器中断使能

//波特率设置 SCI-Band=LSPCLK/((BRR+1)*8)---9600K
SciaRegs.SCIHBAUD = 0x0001;
SciaRegs.SCILBAUD = 0x00E7;

SciaRegs.SCICTL1.all =0x0023; // SCI初始化完成退出复位重启状态

}

//串口发送--变量
void scia_xmit(int a)
{
while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
SciaRegs.SCITXBUF=a;

}

//串口发送--字符或字符串
void scia_msg(char * msg)
{
int16 i;
i = 0;
while(msg[i] != '/0')
{
scia_xmit(msg[i]);
i++;
}
}

// 初始化 SCI--FIFO
void scia_fifo_init()
{
SciaRegs.SCIFFTX.all=0xE040; //允许接收,使能FIFO,清除TXFIFINT
SciaRegs.SCIFFRX.all=0x204f; //使能FIFO接收,清除RXFFINT,16级FIFO
SciaRegs.SCIFFCT.all=0x0000; //禁止波特率校验

}

//===========================================================================
// No more.
//===========================================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值