TI中文支持网
TI专业的中文技术问题搜集分享网站

关于F28027的SCI问题,有数据发出,但不正确

在CCS3.3下的LaunchPad F28027调用scia_xmit(0x01),在串口调试助手上面显示的是7F,scia_xmit(0x02),在串口调试助手上面显示的是3F,不知道是哪里有问题,请大神指点,晶振用的是内部晶振10MHZ,倍频后为60MHz,Low speed clock= SYSCLKOUT/4 ,最终SCICLK为15MHZ,波特率寄存器为    SciaRegs.SCIHBAUD    =0x0000;SciaRegs.SCILBAUD    =0x00C2;(9600的波特率),现在不知道哪个环节有问题,个人感觉数据时发送了的,会不会是波特率有问题,但波特率配也配对了???????????????????

void scia_xmit(int a)
{
       while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
    SciaRegs.SCITXBUF=a;
}

Chen Jones:

1. 建议您先用TI SCI官方历程试试

2. 用下面的算算试试,特别是LSPCLK,仔细检查是否真的是1/4。注意有没有HBAUD

#define CPU_FREQ 60E6#define LSPCLK_FREQ CPU_FREQ#define SCI_FREQ 57600#define SCI_PRD (LSPCLK_FREQ/(SCI_FREQ*8))-1

SciaRegs.SCIHBAUD = 0; SciaRegs.SCILBAUD = SCI_PRD;

在CCS3.3下的LaunchPad F28027调用scia_xmit(0x01),在串口调试助手上面显示的是7F,scia_xmit(0x02),在串口调试助手上面显示的是3F,不知道是哪里有问题,请大神指点,晶振用的是内部晶振10MHZ,倍频后为60MHz,Low speed clock= SYSCLKOUT/4 ,最终SCICLK为15MHZ,波特率寄存器为    SciaRegs.SCIHBAUD    =0x0000;SciaRegs.SCILBAUD    =0x00C2;(9600的波特率),现在不知道哪个环节有问题,个人感觉数据时发送了的,会不会是波特率有问题,但波特率配也配对了???????????????????

void scia_xmit(int a)
{
       while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
    SciaRegs.SCITXBUF=a;
}

Mak he:

回复 Chen Jones:

用的就是SCI官方实例,

选用的是内部时钟1   IntOsc1Sel();

软件锁相选择:InitPll(DSP28_PLLCR,DSP28_DIVSEL);//DSP28_PLLCR=12,DIVSEL=2

  LSPCLK选择是: SysCtrlRegs.LOSPCP.all = 0x0002;

   SysCtrlRegs.XCLK.bit.XCLKOUTDIV=2; // Set XCLKOUT = SYSCLKOUT/1

   SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1;      // SCI-A

按SCI初始化如下:

#define CPU_FREQ 60E6#define LSPCLK_FREQ CPU_FREQ#define SCI_FREQ 57600#define SCI_PRD (LSPCLK_FREQ/(SCI_FREQ*8))-1

// Test 1,SCIA  DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parityvoid scia_echoback_init(){    // Note: Clocks were turned on to the SCIA peripheral    // in the InitSysCtrl() function

    SciaRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback                                   // No parity,8 char bits,                                   // async mode, idle-line protocol    SciaRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,                                   // Disable RX ERR, SLEEP, TXWAKE    SciaRegs.SCICTL2.all =0x0003;    SciaRegs.SCICTL2.bit.TXINTENA =1;    SciaRegs.SCICTL2.bit.RXBKINTENA =1;

     SciaRegs.SCIHBAUD = 0; SciaRegs.SCILBAUD = SCI_PRD;

    SciaRegs.SCICTL1.all =0x0023;  // Relinquish SCI from Reset}

串口调试助手配置如下图:

 for(;;){  scia_xmit(0xaa);  DELAY_US(1000000);

}

不知道哪个环节出了问题?????????

在CCS3.3下的LaunchPad F28027调用scia_xmit(0x01),在串口调试助手上面显示的是7F,scia_xmit(0x02),在串口调试助手上面显示的是3F,不知道是哪里有问题,请大神指点,晶振用的是内部晶振10MHZ,倍频后为60MHz,Low speed clock= SYSCLKOUT/4 ,最终SCICLK为15MHZ,波特率寄存器为    SciaRegs.SCIHBAUD    =0x0000;SciaRegs.SCILBAUD    =0x00C2;(9600的波特率),现在不知道哪个环节有问题,个人感觉数据时发送了的,会不会是波特率有问题,但波特率配也配对了???????????????????

void scia_xmit(int a)
{
       while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
    SciaRegs.SCITXBUF=a;
}

Mak he:

回复 Mak he:

补充:串口调试助手图片发错啦

赞(0)
未经允许不得转载:TI中文支持网 » 关于F28027的SCI问题,有数据发出,但不正确
分享到: 更多 (0)