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

28335 CAN通信 TX引脚无信号

使用官方例程V133版本的ecan_a_to_b_xmit

无法实现can通信,发送一直卡在红色区域

for(i=0; i < TXCOUNT; i++)
   {
       ECanaShadow.CANTRS.all = 0;
       ECanaShadow.CANTRS.bit.TRS25 = 1;             // Set TRS for mailbox under test
       ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

       do
     {
       ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
    
  } while(ECanaShadow.CANTA.bit.TA25 == 0 );   // Wait for TA25 bit to be set..

       ECanaShadow.CANTA.all = 0;
       ECanaShadow.CANTA.bit.TA25 = 1;               // Clear TA25
       ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

       loopcount ++;
    }

针对这个问题已经做过以下的检测:

1、利用GPIO已验证CAN收发器能正常工作,另外一端连接的CAN测试仪也能正常工作

2、通过示波器发现CANTX引脚输出电平似乎没有变换过,因此怀疑是CANTX不能正常工作,导致CAN收发器不能给DSP发送成功的确认

3、检查过寄存器、GPIO(GPIO19,功能脚3)的设置应该没问题

采用的CCS5.2,仿真器XDS510PLUS,win10系统

搜索过这个问题,发现8年前就有人遇到过,但似乎不能解决我这个问题,希望遇到这个问题的前辈能给一些思路,谢谢

Seven Han:请问您的硬件是怎么连接的呢?最好能够给出您的原理图。
该例程通过CAN盒可以通过测试吗?

使用官方例程V133版本的ecan_a_to_b_xmit

无法实现can通信,发送一直卡在红色区域

for(i=0; i < TXCOUNT; i++)
   {
       ECanaShadow.CANTRS.all = 0;
       ECanaShadow.CANTRS.bit.TRS25 = 1;             // Set TRS for mailbox under test
       ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

       do
     {
       ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
    
  } while(ECanaShadow.CANTA.bit.TA25 == 0 );   // Wait for TA25 bit to be set..

       ECanaShadow.CANTA.all = 0;
       ECanaShadow.CANTA.bit.TA25 = 1;               // Clear TA25
       ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

       loopcount ++;
    }

针对这个问题已经做过以下的检测:

1、利用GPIO已验证CAN收发器能正常工作,另外一端连接的CAN测试仪也能正常工作

2、通过示波器发现CANTX引脚输出电平似乎没有变换过,因此怀疑是CANTX不能正常工作,导致CAN收发器不能给DSP发送成功的确认

3、检查过寄存器、GPIO(GPIO19,功能脚3)的设置应该没问题

采用的CCS5.2,仿真器XDS510PLUS,win10系统

搜索过这个问题,发现8年前就有人遇到过,但似乎不能解决我这个问题,希望遇到这个问题的前辈能给一些思路,谢谢

rc L:

回复 Seven Han:

您好,请问可以给一个联系方式吗,我图片发不上来。

使用官方例程V133版本的ecan_a_to_b_xmit

无法实现can通信,发送一直卡在红色区域

for(i=0; i < TXCOUNT; i++)
   {
       ECanaShadow.CANTRS.all = 0;
       ECanaShadow.CANTRS.bit.TRS25 = 1;             // Set TRS for mailbox under test
       ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

       do
     {
       ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
    
  } while(ECanaShadow.CANTA.bit.TA25 == 0 );   // Wait for TA25 bit to be set..

       ECanaShadow.CANTA.all = 0;
       ECanaShadow.CANTA.bit.TA25 = 1;               // Clear TA25
       ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

       loopcount ++;
    }

针对这个问题已经做过以下的检测:

1、利用GPIO已验证CAN收发器能正常工作,另外一端连接的CAN测试仪也能正常工作

2、通过示波器发现CANTX引脚输出电平似乎没有变换过,因此怀疑是CANTX不能正常工作,导致CAN收发器不能给DSP发送成功的确认

3、检查过寄存器、GPIO(GPIO19,功能脚3)的设置应该没问题

采用的CCS5.2,仿真器XDS510PLUS,win10系统

搜索过这个问题,发现8年前就有人遇到过,但似乎不能解决我这个问题,希望遇到这个问题的前辈能给一些思路,谢谢

Seven Han:

回复 rc L:

您点击右下角的使用高级编辑器编辑文本后,进入下图界面,然后通过红线标注的窗口可以将图片传上来。

使用官方例程V133版本的ecan_a_to_b_xmit

无法实现can通信,发送一直卡在红色区域

for(i=0; i < TXCOUNT; i++)
   {
       ECanaShadow.CANTRS.all = 0;
       ECanaShadow.CANTRS.bit.TRS25 = 1;             // Set TRS for mailbox under test
       ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

       do
     {
       ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
    
  } while(ECanaShadow.CANTA.bit.TA25 == 0 );   // Wait for TA25 bit to be set..

       ECanaShadow.CANTA.all = 0;
       ECanaShadow.CANTA.bit.TA25 = 1;               // Clear TA25
       ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

       loopcount ++;
    }

针对这个问题已经做过以下的检测:

1、利用GPIO已验证CAN收发器能正常工作,另外一端连接的CAN测试仪也能正常工作

2、通过示波器发现CANTX引脚输出电平似乎没有变换过,因此怀疑是CANTX不能正常工作,导致CAN收发器不能给DSP发送成功的确认

3、检查过寄存器、GPIO(GPIO19,功能脚3)的设置应该没问题

采用的CCS5.2,仿真器XDS510PLUS,win10系统

搜索过这个问题,发现8年前就有人遇到过,但似乎不能解决我这个问题,希望遇到这个问题的前辈能给一些思路,谢谢

rc L:

回复 Seven Han:

还有一些说明:

1、1Mbps时,通过示波器看到总线上有一段数据(没能抓拍下来),但是测试仪没有收到数据,之后总线上一直没信息CANTA一直没置位,

       500kbps及以下,就会出现图1那样的情况,我无法解释这个现象,我想问一下CANTA没有置位之前,CANTX会一直重新发送数据吗?

      还有CANTA在什么情况下会置位。

2、这个发送器的运放可能有点差,不知道是不是这样影响到了CANRX的监听,从而使得CANTA无法置位。

使用官方例程V133版本的ecan_a_to_b_xmit

无法实现can通信,发送一直卡在红色区域

for(i=0; i < TXCOUNT; i++)
   {
       ECanaShadow.CANTRS.all = 0;
       ECanaShadow.CANTRS.bit.TRS25 = 1;             // Set TRS for mailbox under test
       ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

       do
     {
       ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
    
  } while(ECanaShadow.CANTA.bit.TA25 == 0 );   // Wait for TA25 bit to be set..

       ECanaShadow.CANTA.all = 0;
       ECanaShadow.CANTA.bit.TA25 = 1;               // Clear TA25
       ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

       loopcount ++;
    }

针对这个问题已经做过以下的检测:

1、利用GPIO已验证CAN收发器能正常工作,另外一端连接的CAN测试仪也能正常工作

2、通过示波器发现CANTX引脚输出电平似乎没有变换过,因此怀疑是CANTX不能正常工作,导致CAN收发器不能给DSP发送成功的确认

3、检查过寄存器、GPIO(GPIO19,功能脚3)的设置应该没问题

采用的CCS5.2,仿真器XDS510PLUS,win10系统

搜索过这个问题,发现8年前就有人遇到过,但似乎不能解决我这个问题,希望遇到这个问题的前辈能给一些思路,谢谢

rc L:

回复 Seven Han:

刚刚忘记说了一点,这次的测试稍微改了一下例程,就是TA不置位,我就不管他了,其他没变
do{cnt++;ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;} while(ECanaShadow.CANTA.bit.TA0 == 0 && cnt<100);// Wait for TA0 bit to be set..

使用官方例程V133版本的ecan_a_to_b_xmit

无法实现can通信,发送一直卡在红色区域

for(i=0; i < TXCOUNT; i++)
   {
       ECanaShadow.CANTRS.all = 0;
       ECanaShadow.CANTRS.bit.TRS25 = 1;             // Set TRS for mailbox under test
       ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

       do
     {
       ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
    
  } while(ECanaShadow.CANTA.bit.TA25 == 0 );   // Wait for TA25 bit to be set..

       ECanaShadow.CANTA.all = 0;
       ECanaShadow.CANTA.bit.TA25 = 1;               // Clear TA25
       ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

       loopcount ++;
    }

针对这个问题已经做过以下的检测:

1、利用GPIO已验证CAN收发器能正常工作,另外一端连接的CAN测试仪也能正常工作

2、通过示波器发现CANTX引脚输出电平似乎没有变换过,因此怀疑是CANTX不能正常工作,导致CAN收发器不能给DSP发送成功的确认

3、检查过寄存器、GPIO(GPIO19,功能脚3)的设置应该没问题

采用的CCS5.2,仿真器XDS510PLUS,win10系统

搜索过这个问题,发现8年前就有人遇到过,但似乎不能解决我这个问题,希望遇到这个问题的前辈能给一些思路,谢谢

Seven Han:

回复 rc L:

1.是的,需要接受到ACK信号后置位,一般 导致TA位不置位的原因是CANA与CANB在硬件上连接出现了问题。
2.确保连接没问题的情况下下,波特率设置低点是否可以呢。

使用官方例程V133版本的ecan_a_to_b_xmit

无法实现can通信,发送一直卡在红色区域

for(i=0; i < TXCOUNT; i++)
   {
       ECanaShadow.CANTRS.all = 0;
       ECanaShadow.CANTRS.bit.TRS25 = 1;             // Set TRS for mailbox under test
       ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

       do
     {
       ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
    
  } while(ECanaShadow.CANTA.bit.TA25 == 0 );   // Wait for TA25 bit to be set..

       ECanaShadow.CANTA.all = 0;
       ECanaShadow.CANTA.bit.TA25 = 1;               // Clear TA25
       ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

       loopcount ++;
    }

针对这个问题已经做过以下的检测:

1、利用GPIO已验证CAN收发器能正常工作,另外一端连接的CAN测试仪也能正常工作

2、通过示波器发现CANTX引脚输出电平似乎没有变换过,因此怀疑是CANTX不能正常工作,导致CAN收发器不能给DSP发送成功的确认

3、检查过寄存器、GPIO(GPIO19,功能脚3)的设置应该没问题

采用的CCS5.2,仿真器XDS510PLUS,win10系统

搜索过这个问题,发现8年前就有人遇到过,但似乎不能解决我这个问题,希望遇到这个问题的前辈能给一些思路,谢谢

Seven Han:

回复 rc L:

另外这边有个基于F28335 ecan测试的总结文档,您也可以参考下:
www.ti.com/…/spra876b.pdf
若您还有问题可以继续讨论。

使用官方例程V133版本的ecan_a_to_b_xmit

无法实现can通信,发送一直卡在红色区域

for(i=0; i < TXCOUNT; i++)
   {
       ECanaShadow.CANTRS.all = 0;
       ECanaShadow.CANTRS.bit.TRS25 = 1;             // Set TRS for mailbox under test
       ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

       do
     {
       ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
    
  } while(ECanaShadow.CANTA.bit.TA25 == 0 );   // Wait for TA25 bit to be set..

       ECanaShadow.CANTA.all = 0;
       ECanaShadow.CANTA.bit.TA25 = 1;               // Clear TA25
       ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

       loopcount ++;
    }

针对这个问题已经做过以下的检测:

1、利用GPIO已验证CAN收发器能正常工作,另外一端连接的CAN测试仪也能正常工作

2、通过示波器发现CANTX引脚输出电平似乎没有变换过,因此怀疑是CANTX不能正常工作,导致CAN收发器不能给DSP发送成功的确认

3、检查过寄存器、GPIO(GPIO19,功能脚3)的设置应该没问题

采用的CCS5.2,仿真器XDS510PLUS,win10系统

搜索过这个问题,发现8年前就有人遇到过,但似乎不能解决我这个问题,希望遇到这个问题的前辈能给一些思路,谢谢

rc L:

回复 Seven Han:

谢谢您的回复,我还想再问一下:

1、CANA与CANB不是独立的模块的吗?两者需要硬件连接?

2、试过50kbps,也不行,不至于这么低吧?

3、其他的我先看看您提供的文档

使用官方例程V133版本的ecan_a_to_b_xmit

无法实现can通信,发送一直卡在红色区域

for(i=0; i < TXCOUNT; i++)
   {
       ECanaShadow.CANTRS.all = 0;
       ECanaShadow.CANTRS.bit.TRS25 = 1;             // Set TRS for mailbox under test
       ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

       do
     {
       ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
    
  } while(ECanaShadow.CANTA.bit.TA25 == 0 );   // Wait for TA25 bit to be set..

       ECanaShadow.CANTA.all = 0;
       ECanaShadow.CANTA.bit.TA25 = 1;               // Clear TA25
       ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

       loopcount ++;
    }

针对这个问题已经做过以下的检测:

1、利用GPIO已验证CAN收发器能正常工作,另外一端连接的CAN测试仪也能正常工作

2、通过示波器发现CANTX引脚输出电平似乎没有变换过,因此怀疑是CANTX不能正常工作,导致CAN收发器不能给DSP发送成功的确认

3、检查过寄存器、GPIO(GPIO19,功能脚3)的设置应该没问题

采用的CCS5.2,仿真器XDS510PLUS,win10系统

搜索过这个问题,发现8年前就有人遇到过,但似乎不能解决我这个问题,希望遇到这个问题的前辈能给一些思路,谢谢

rc L:

回复 Seven Han:

有一些进展了:
1、昨天图片里的tx发送的一个是CAN的错误帧
2、我想知道在什么情况下28335会一直发送错误帧,这个过程我没找到详细的说明
谢谢您

赞(0)
未经允许不得转载:TI中文支持网 » 28335 CAN通信 TX引脚无信号
分享到: 更多 (0)