TMS320F2812外设例程系列之SCI
(2012-07-17 10:29:03)
标签:
2812sciit |
分类: 资源共享 |
//#####################################################################
//文件: Example_281xSci_FFDLB_int.c
//说明: 该程序是SCI中断发送、接收的典型程序,
//
采用内部连接的自循环模式,即自发、自接
//#####################################################################
//SCI-A 发送的数据流:
//00 01 02 03 04 05 06 07
//01 02 03 04 05 06 07 08
//02 03 04 05 06 07 08 09
//....
//FE FF 00 01 02 03 04 05
//FF 00 01 02 03 04 05 06
//etc..
//SCI-B 发送的数据流:
//FF FE FD FC FB FA F9 F8
//FE FD FC FB FA F9 F8 F7
//FD FC FB FA F9 F8 F7 F6
//....
//01 00 FF FE FD FC FB FA
//00 FF FE FD FC FB FA F9
//etc..
//检查变量:
// SCI-A
SCI-B
//
----------------------
// sdataA
sdataB
//发送的数据
// rdataA
rdataB
//接收的数据
// rdata_pointA
rdata_pointB
//用来检查接收到的数据
//#####################################################################
#include "DSP281x_Device.h"
//F2812头文件
#include "DSP281x_Examples.h"
#define CPU_FREQ 150E6
#define LSPCLK_FREQ CPU_FREQ/4
#define SCI_FREQ 100E3
#define SCI_PRD (LSPCLK_FREQ/(SCI_FREQ*8))-1
//功能函数原型
interrupt void sciaTxFifoIsr(void);
interrupt void sciaRxFifoIsr(void);
interrupt void scibTxFifoIsr(void);
interrupt void scibRxFifoIsr(void);
void scia_fifo_init(void);
void scib_fifo_init(void);
void error(void);
//全局变量
Uint16 sdataA[8];
//SCI-A发送的数据
Uint16 sdataB[8];
//SCI-B发送的数据
Uint16 rdataA[8];
//SCI-A接收的数据
Uint16 rdataB[8];
//SCI-B接收的数据
Uint16 rdata_pointA; //用于检查接收到的数据
Uint16 rdata_pointB;
//主程序
void main(void)
{
}
void error(void)
{
}
//SCIA 发送中断服务程序
interrupt void sciaTxFifoIsr(void)
{
}
}
SciaRegs.SCIFFTX.bit.TXINTCLR=1;
//清除 SCI 中断使能位
PieCtrlRegs.PIEACK.all|=0x100;
}
//SCIA 接收中断服务程序
interrupt void sciaRxFifoIsr(void)
{
for(i=0;i<8;i++)
{
}
for(i=0;i<8;i++)
//检查接收到的数据
{
}
rdata_pointA = (rdata_pointA+1) &
0x00FF;
SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1;
//清除溢出标志位
SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;
//清除中断标志位
PieCtrlRegs.PIEACK.all|=0x100;
}
//SCIA 初始化函数
void scia_fifo_init()
{
}
//SCIB 发送中断服务程序
interrupt void scibTxFifoIsr(void)
{
}
}
ScibRegs.SCIFFTX.bit.TXINTCLR=1;
//清除 SCI 中断标志位
PieCtrlRegs.PIEACK.all|=0x100;
}
//SCIB 接收中断服务程序
interrupt void scibRxFifoIsr(void)
{
for(i=0;i<8;i++)
{
}
for(i=0;i<8;i++)
//检查接收到的数据
{
}
rdata_pointB = (rdata_pointB-1) &
0x00FF;
ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1;
//清除溢出标志位
ScibRegs.SCIFFRX.bit.RXFFINTCLR=1;
//清除中断标志位
PieCtrlRegs.PIEACK.all|=0x100;
}
//SCIB 初始化函数
void scib_fifo_init()
{
}