This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于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;
}

  • 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;

  • 用的就是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 parity
    void 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);

    }

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

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