2812串口通信问题
#include "DSP28_Device.h"
interrupt void ISRTimer0(void);
int f;
unsigned int Sendchar=0x00;
#define FALSE 0
void main(void)
{
InitSysCtrl(); //初始化系统
DINT; //屏蔽全局中断
IER = 0x0000; //禁止所有的CPU级中断
IFR = 0x0000; //清除CPU级中断标志位
InitPieCtrl();
InitPieVectTable();
EALLOW;
PieVectTable.TINT0=&ISRTimer0; //INT1.7
PieVectTable.CAPINT1=&capint; //INT3.5
EDIS;
InitXintf();
InitCpuTimers();
InitSci();
ConfigCpuTimer(&CpuTimer0,100,100000);
StartCpuTimer0();
PieCtrl.PIEIER1.bit.INTx7=1;
PieCtrl.PIEIER3.bit.INTx5=1;
IER|=0x0005;//使能CPU INT1和INT3
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
for(;
{
// myshow(1,0x04,0x05);
if((SciaRegs.SCICTL2.bit.TXRDY == 1) && (f == 1))
{ SciaRegs.SCITXBUF = Sendchar;
f=0;
Sendchar++;
if (Sendchar==0xff)
Sendchar=0;
}
KickDog();
}
}
void InitSci(void)
{
/*------- 初始化SCI-A -------*/
#ifdef RS232
/*设置SCIA为功能口*/
EALLOW;
GpioMuxRegs.GPFMUX.all = 0x0030;
EDIS;
/* SCI字符长度为8位 */
SciaRegs.SCICCR.all = 0x07;
SciaRegs.SCICTL2.all = 0x00;
SciaRegs.SCIHBAUD = 0x0001;
SciaRegs.SCILBAUD = 0x00E7;
SciaRegs.SCICTL1.all = 0x23;
PieCtrl.PIEIER9.bit.INTx1 = 1;
PieCtrl.PIEIER9.bit.INTx2 = 1;
#endif
}
interrupt void ISRTimer0(void)
{
PieCtrl.PIEACK.bit.ACK1=1;
f=1;
}
新手上路,麻烦各位大侠帮忙。我使用的是DSP2812的232串口通信,按照上面的程序,我在CCS的观察窗上能看到SciaRegs.SCITXBUF寄存器中的数据变化,但是在DSp的发送引脚上检查不出来有数据发送,用示波器观测不到高低电平的变化。很奇怪的是在232转换芯片引脚上高低电平变化很剧烈,用串口调试工具能收到数据。但是数据时随机数,也不是我发送的数据。各位大侠,这属于什么情况啊。
初始化设置不完整吧。
我的邮箱gaoxiaoan123@163.com!回帖是一种美德!互相帮助,共同进步!
口头禅:生活在于创造机会,把握机会!
回复 沙发 Electric_Hust 的帖子
设置了,GpioMuxRegs.GPFMUX.all = 0x0030;
不就是设置为串口的吗
回复 板凳 gaoxiao 的帖子
那除了这方面的设置还有哪些要注意的呢,一般不就是配置I/O为串口,配置下字符长度,奇偶校验,停止位,波特率吗?还有哪些呢,谢谢指教