【CAN通信】AUTOSAR架构下TC3xx芯片是如何将一帧CAN报文发送出去的
目录
前言
正文
1.背景介绍
2.CAN Driver发送报文的底层实现
2.1. vCan_30_Mcan_TxStart实现
2.2 vCan_30_Mcan_CopyToTxBuffer复制报文内容
2.3 TXBAR请求报文发送
2.4 vCan_30_Mcan_Interrupt产生发送中断
2.5. vCan_30_Mcan_TxConfirmation
2.6. vCan_30_Mcan_TxNotification
2.7. Can_30_Core_Confirmation
2.8. Can_30_Core_SetBufferStatus
3.总结
前言
以前在调试CAN通信协议栈时只要CAN报文能到CAN Driver模块的Can_Write且Can_Write返回CAN_OK,就认为报文一定能发出去不再关注Can Driver内部的实现细节了。但是最近在调试CAN报文发送时发现还必须关注下Can Driver的内部实现细节才能证明一些猜想,所以本文就来捋一捋Can Driver内部的报文发送细节。同时回答以下几个问题:
问题1:Can_Write返回Busy, 这个Busy是硬件上的报文发送Busy, 还是软件逻辑busy?
问题2:Can_Write中涉及的Busy状态什么时候被清掉?
问题3:Can_Write返回E_OK,报文一定已经发送到CAN总线上了吗?
AUTOSAR BSW: Vector Davinci
MCAL: EB Infineon
HW Platform: TC3xx