T2G CAN Tramsmit Interrupt flag

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
chme_4646286
Level 4
Level 4
Distributor - Intron(GC)
100 sign-ins First comment on blog 50 sign-ins

请教个问题:

基于SDL7.3 验证Basic CAN功能,示例路径为:T2G_Sample_Driver_Library_7.3.0\tviibe1m\src\examples\canfd\Classic_CAN

CAN 接口可以正常的收发数据,但数据发送成功后,其发送完成标记没有置位,烦请帮忙确定下该问题原因;

debug过程截图如下:

chme_4646286_0-1643436645754.png

 

0 Likes
1 Solution
yanf
Moderator
Moderator
Moderator
50 replies posted 50 sign-ins 25 solutions authored

Hi chme_4646286

请检查另一个寄存器CANFDx_CHy_TXBTO.TO位是否置位

TO为一个32位寄存器,置位的序号与使用了几号buffer发送数据有关。

BR,

Finn

View solution in original post

0 Likes
7 Replies
Roy_Liu
Moderator
Moderator
Moderator
5 comments on KBA First comment on KBA 10 questions asked

截图最好以附件的形式附上来,目前community 平台有些问题,打不开,带来的不便多多谅解啊。

另临近春节, 可能要年后专家们 @yanf 才能看了

Roy Liu
0 Likes
lock attach
Attachments are accessible only for community members.
chme_4646286
Level 4
Level 4
Distributor - Intron(GC)
100 sign-ins First comment on blog 50 sign-ins

Hi Roy;

感谢,烦请参考附件

0 Likes
yanf
Moderator
Moderator
Moderator
50 replies posted 50 sign-ins 25 solutions authored

Hi chme_4646286

先将对应通道下的CANFDx_CHy_IE寄存器下的TCE位设置成enable(1)再看一下呢?

Best Regards,

Finn

0 Likes
lock attach
Attachments are accessible only for community members.
chme_4646286
Level 4
Level 4
Distributor - Intron(GC)
100 sign-ins First comment on blog 50 sign-ins

Hi yanf;

我已经把cy_canfd.c文件中的TCE使能位置位了,附件是我目前调试用的main_cm4.c和cy_canfd.c;

CAN通道的发送,接收是正常的,但发送之后的中断标记置位却一直无效,麻烦帮忙确认下,谢谢~~

chme_4646286_0-1644803846842.png

 

0 Likes
yanf
Moderator
Moderator
Moderator
50 replies posted 50 sign-ins 25 solutions authored

Hi chme_4646286,

cy_canfd.c 中的 Cy_CANFD_IrqHandler函数,在偏下位置处有代码

else if(pstcCanFDChMTTCAN->unIR.stcField.u1TC == 1) // Transmission Completed

 pstcCanFDChMTTCAN->unIR.stcField.u1TC = 1UL;

可能将TC位清除了,请在这句话之前设置断点,检查中断标记位置TC是否为1

BR,

Finn

0 Likes
chme_4646286
Level 4
Level 4
Distributor - Intron(GC)
100 sign-ins First comment on blog 50 sign-ins

Hi yanf;

在代码

else if(pstcCanFDChMTTCAN->unIR.stcField.u1TC == 1) // Transmission Completed

 pstcCanFDChMTTCAN->unIR.stcField.u1TC = 1UL;

之前打断点,中断标记位TC并没有置位;

请知悉,谢谢

 

0 Likes
yanf
Moderator
Moderator
Moderator
50 replies posted 50 sign-ins 25 solutions authored

Hi chme_4646286

请检查另一个寄存器CANFDx_CHy_TXBTO.TO位是否置位

TO为一个32位寄存器,置位的序号与使用了几号buffer发送数据有关。

BR,

Finn

0 Likes