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

f28027使用driverlib驱动scia,flash下使用仿真器调试时串口接收正常,断开仿真器重新上电串口却接收不到数据

在ccs v6.2下导入“ti\controlSUITE\device_support\f2802x\v230\f2802x_examples_drivers”下“scia_loopback_interrupts”&scia_loopback,这两个例程

在c2000 launchpad下,flash下调试串口接收正常,断开在线调试,重新插拔USB线后,串口却接收不到数据

更改部分如下:

__interrupt void sciaTxFifoIsr(void)
{
    uint16_t i;
    for(i=0; i< 2; i++)
    {
        // Send data

        sdataA[i] = rdataA[i];
        SCI_putDataBlocking(mySci, sdataA[i]);
    }

    /*
    for(i=0; i< 2; i++)
    {
        //Increment send data for next cycle
        sdataA[i] = (sdataA[i]+1) & 0x00FF;
    }
    */

    // Clear SCI Interrupt flag
    SCI_clearTxFifoInt(mySci);

    // Issue PIE ACK
    PIE_clearInt(myPie, PIE_GroupNumber_9);

    return;
}

__interrupt void sciaRxFifoIsr(void)
{
    uint16_t i;

    if(SCI_getRxFifoStatus(mySci) != SCI_FifoLevel_Empty)
    {
        for(i=0;i<2;i++)
        {
            // Read data
            rdataA[i] = SCI_getData(mySci);
        }
        /*
        for(i=0;i<2;i++)
        {
           // Check received data
           if(rdataA[i] != ( (rdata_pointA+i) & 0x00FF) )
               error();
        }

        rdata_pointA = (rdata_pointA+1) & 0x00FF;
        */
    }

    // Clear Overflow flag
    SCI_clearRxFifoOvf(mySci);

    // Clear Interrupt flag
    SCI_clearRxFifoInt(mySci);

    // Issue PIE ack
    PIE_clearInt(myPie, PIE_GroupNumber_9);

    return;
}

不使用中断,主函数下查询串口接收方式,断电后串口也接收不到数据,请问需要更改哪个地方?

一开始参考driver下例程编写的串口程序,断电后串口接受不打,后来就测试了下官网下载的2个例程,也是同样情况

mangui zhang:

这种类似问题以前遇到过       其实仿真器调试时  程序在RAM中跑的 

上电如果串口收不到数据    建议你复位一下看看

确保你的硬件电路能够上电自复位

在ccs v6.2下导入“ti\controlSUITE\device_support\f2802x\v230\f2802x_examples_drivers”下“scia_loopback_interrupts”&scia_loopback,这两个例程

在c2000 launchpad下,flash下调试串口接收正常,断开在线调试,重新插拔USB线后,串口却接收不到数据

更改部分如下:

__interrupt void sciaTxFifoIsr(void)
{
    uint16_t i;
    for(i=0; i< 2; i++)
    {
        // Send data

        sdataA[i] = rdataA[i];
        SCI_putDataBlocking(mySci, sdataA[i]);
    }

    /*
    for(i=0; i< 2; i++)
    {
        //Increment send data for next cycle
        sdataA[i] = (sdataA[i]+1) & 0x00FF;
    }
    */

    // Clear SCI Interrupt flag
    SCI_clearTxFifoInt(mySci);

    // Issue PIE ACK
    PIE_clearInt(myPie, PIE_GroupNumber_9);

    return;
}

__interrupt void sciaRxFifoIsr(void)
{
    uint16_t i;

    if(SCI_getRxFifoStatus(mySci) != SCI_FifoLevel_Empty)
    {
        for(i=0;i<2;i++)
        {
            // Read data
            rdataA[i] = SCI_getData(mySci);
        }
        /*
        for(i=0;i<2;i++)
        {
           // Check received data
           if(rdataA[i] != ( (rdata_pointA+i) & 0x00FF) )
               error();
        }

        rdata_pointA = (rdata_pointA+1) & 0x00FF;
        */
    }

    // Clear Overflow flag
    SCI_clearRxFifoOvf(mySci);

    // Clear Interrupt flag
    SCI_clearRxFifoInt(mySci);

    // Issue PIE ack
    PIE_clearInt(myPie, PIE_GroupNumber_9);

    return;
}

不使用中断,主函数下查询串口接收方式,断电后串口也接收不到数据,请问需要更改哪个地方?

一开始参考driver下例程编写的串口程序,断电后串口接受不打,后来就测试了下官网下载的2个例程,也是同样情况

Seven Han:

回复 shoupeng wang:

楼上说的对,这两个例程使用的cmd文件是ram的,仅用于调试,掉电不保存,且scia_loopback是自发自收,外部不需要接串口线;

基于您的描述,需要使用flash的cmd文件。

赞(0)
未经允许不得转载:TI中文支持网 » f28027使用driverlib驱动scia,flash下使用仿真器调试时串口接收正常,断开仿真器重新上电串口却接收不到数据
分享到: 更多 (0)