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

DSP 28335 CAN回环程序

我在DSP28335 的开发板上测试回环程序,把0-15邮箱用来,16-31用来接收,下面是循环程序

for(;;)                                

    {

     

       ECanbRegs.CANTRS.all = 0x0000FFFF;  // Set TRS for all transmit mailboxes

       while(ECanbRegs.CANTA.all != 0x0000FFFF ) {}  // Wait for all TAn bits to be set..

       ECanbRegs.CANTA.all = 0x0000FFFF;   // Clear all TAn    

       MessageReceivedCount++;

       //Read from Receive mailboxes and begin checking for data */

       for(j=0; j<16; j++)         // Read & check 16 mailboxes

       {

          mailbox_read(j);         // This func reads the indicated mailbox data

          mailbox_check(TestMbox1,TestMbox2,TestMbox3); // Checks the received data

       }

       if(MessageReceivedCount > 100)

       {

      if(ErrorCount == 0)

  {

asm("      ESTOP0"); // OK

  }

  else

  {

asm("      ESTOP0"); // ERROR

  }

       }

    }

我发现程序运行时停在 asm("      ESTOP0"); // OK   这句,意思是接收的数据错误为0,系统停止,但是当我想看CANTX和CANRX端输出的波形时,把下面判断的部分删除,即保留

for(;;)                                

    {

     

       ECanbRegs.CANTRS.all = 0x0000FFFF;  // Set TRS for all transmit mailboxes

       while(ECanbRegs.CANTA.all != 0x0000FFFF ) {}  // Wait for all TAn bits to be set..

       ECanbRegs.CANTA.all = 0x0000FFFF;   // Clear all TAn    

       MessageReceivedCount++;

       //Read from Receive mailboxes and begin checking for data */

       for(j=0; j<16; j++)         // Read & check 16 mailboxes

       {

          mailbox_read(j);         // This func reads the indicated mailbox data

          mailbox_check(TestMbox1,TestMbox2,TestMbox3); // Checks the received data

       }

    }

这时候引脚上却测不到波形,请问是为什么呢?

Susan Yang:您可以测试一下 C:\ti\controlSUITE\device_support\f2833x\v142\DSP2823x_examples_ccsv5\ecan_back2back,该程序内使用了self-test mode/loopback

我在DSP28335 的开发板上测试回环程序,把0-15邮箱用来,16-31用来接收,下面是循环程序

for(;;)                                

    {

     

       ECanbRegs.CANTRS.all = 0x0000FFFF;  // Set TRS for all transmit mailboxes

       while(ECanbRegs.CANTA.all != 0x0000FFFF ) {}  // Wait for all TAn bits to be set..

       ECanbRegs.CANTA.all = 0x0000FFFF;   // Clear all TAn    

       MessageReceivedCount++;

       //Read from Receive mailboxes and begin checking for data */

       for(j=0; j<16; j++)         // Read & check 16 mailboxes

       {

          mailbox_read(j);         // This func reads the indicated mailbox data

          mailbox_check(TestMbox1,TestMbox2,TestMbox3); // Checks the received data

       }

       if(MessageReceivedCount > 100)

       {

      if(ErrorCount == 0)

  {

asm("      ESTOP0"); // OK

  }

  else

  {

asm("      ESTOP0"); // ERROR

  }

       }

    }

我发现程序运行时停在 asm("      ESTOP0"); // OK   这句,意思是接收的数据错误为0,系统停止,但是当我想看CANTX和CANRX端输出的波形时,把下面判断的部分删除,即保留

for(;;)                                

    {

     

       ECanbRegs.CANTRS.all = 0x0000FFFF;  // Set TRS for all transmit mailboxes

       while(ECanbRegs.CANTA.all != 0x0000FFFF ) {}  // Wait for all TAn bits to be set..

       ECanbRegs.CANTA.all = 0x0000FFFF;   // Clear all TAn    

       MessageReceivedCount++;

       //Read from Receive mailboxes and begin checking for data */

       for(j=0; j<16; j++)         // Read & check 16 mailboxes

       {

          mailbox_read(j);         // This func reads the indicated mailbox data

          mailbox_check(TestMbox1,TestMbox2,TestMbox3); // Checks the received data

       }

    }

这时候引脚上却测不到波形,请问是为什么呢?

Shaochen Wang:

回复 Susan Yang:

还是没有波形。。。

我在DSP28335 的开发板上测试回环程序,把0-15邮箱用来,16-31用来接收,下面是循环程序

for(;;)                                

    {

     

       ECanbRegs.CANTRS.all = 0x0000FFFF;  // Set TRS for all transmit mailboxes

       while(ECanbRegs.CANTA.all != 0x0000FFFF ) {}  // Wait for all TAn bits to be set..

       ECanbRegs.CANTA.all = 0x0000FFFF;   // Clear all TAn    

       MessageReceivedCount++;

       //Read from Receive mailboxes and begin checking for data */

       for(j=0; j<16; j++)         // Read & check 16 mailboxes

       {

          mailbox_read(j);         // This func reads the indicated mailbox data

          mailbox_check(TestMbox1,TestMbox2,TestMbox3); // Checks the received data

       }

       if(MessageReceivedCount > 100)

       {

      if(ErrorCount == 0)

  {

asm("      ESTOP0"); // OK

  }

  else

  {

asm("      ESTOP0"); // ERROR

  }

       }

    }

我发现程序运行时停在 asm("      ESTOP0"); // OK   这句,意思是接收的数据错误为0,系统停止,但是当我想看CANTX和CANRX端输出的波形时,把下面判断的部分删除,即保留

for(;;)                                

    {

     

       ECanbRegs.CANTRS.all = 0x0000FFFF;  // Set TRS for all transmit mailboxes

       while(ECanbRegs.CANTA.all != 0x0000FFFF ) {}  // Wait for all TAn bits to be set..

       ECanbRegs.CANTA.all = 0x0000FFFF;   // Clear all TAn    

       MessageReceivedCount++;

       //Read from Receive mailboxes and begin checking for data */

       for(j=0; j<16; j++)         // Read & check 16 mailboxes

       {

          mailbox_read(j);         // This func reads the indicated mailbox data

          mailbox_check(TestMbox1,TestMbox2,TestMbox3); // Checks the received data

       }

    }

这时候引脚上却测不到波形,请问是为什么呢?

Shaochen Wang:

官方例程试了,在程序里看寄存器的数值变化是正确的,但是测波形就是没有,我在怀疑是不是自测模式下看不到波形,有做过的吗

赞(0)
未经允许不得转载:TI中文支持网 » DSP 28335 CAN回环程序
分享到: 更多 (0)