使用官方例程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会一直发送错误帧,这个过程我没找到详细的说明
谢谢您