Autosar通信模块BSW分析
本文将详细介绍Autosar通信模块BSW中的各个组件,并以Vector的达芬奇为例说明接口调用关系和原理。
COM组件
COM组件是应用层和BSW通信模块之间的接口。应用层无需关心数据走什么总线,只需要与COM交互。COM将数据分配到相应的总线,也将不同总线的数据汇总上传给应用层。
应用层通过Com_SendSignal接口将数据发送给COM。COM将数据写入PDU,再通过PduR_ComTransmit接口发送给PDU Router。
反之,PDU Router通过PduR_ComTransmit接口将接收到的数据发送给COM。COM将数据发送给应用层。应用层通过Com_ReceiveSignal接口读取数据。
PDU Router组件
PDU Router的功能是将COM发送下来的PDU分发到相应的总线,也将不同总线接收到的PDU发送给COM。
COM通过PduR_ComTransmit接口将PDU发送给PDU Router。PDU Router解析PDU,确定其所属总线,然后调用相应总线的PduR_Transmit接口将PDU发送出去。
各总线通过PduR_RxIndication接口将接收到的PDU发送给PDU Router。PDU Router调用PduR_ComTransmit接口,将PDU发送给COM。
CAN Interface组件
CAN Interface管理CAN总线的发送接收队列,以及CAN FD和CAN主从站配置。它与硬件无关,由下层的CAN Driver实现硬件交互。
PDU Router通过PduR_CanIfTxConfirmation接口将发送结果发送给CAN Interface。CAN Interface确认PDU是否发送成功,写入发送结果。
CAN Interface从发送队列中取出PDU,通过CanIf_Transmit接口将PDU发送给CAN Driver进行发送。
CAN Driver通过CanIf_TxConfirmation接口将PDU的发送结果发送回CAN Interface。CAN Interface更新发送结果。
CAN Driver通过CanIf_RxIndication接口将接收到的PDU发送给CAN Interface。CAN Interface将PDU发送给PDU Router。
CAN Driver组件
CAN Driver实现了与MCU的CAN模块交互,完成CAN总线的发送和接收功能。
它接收来自CAN Interface的发送请求,通过MCAL中的CAN接口与CAN模块交互,在总线上发送PDU。发送完成后,它通过CanIf_TxConfirmation接口将结果发送给CAN Interface。
当CAN模块接收到数据时,它通过CanIf_RxIndication接口将接收到的PDU发送给CAN Interface。
Trcv Driver组件
如果使用外置的CAN收发器,则需要Trcv Driver组件实现与其交互。CAN Driver与Trcv Driver进行交互,Trcv Driver再与CAN收发器通信,来实现CAN消息的发送和接收。
CAN Driver通过Trcv_Write接口将发送数据传给Trcv Driver。Trcv Driver与CAN收发器交互,在CAN总线上传送数据。发送完成后,通过Trcv_Confirmation接口将结果返回给CAN Driver。
CAN收发器接收到数据后,会通知Trcv Driver。Trcv Driver接收到的数据通过Trcv_Read接口发送给CAN Driver。
综上,Autosar通信模块BSW的组件通过层层的接口调用,实现从应用层到CAN总线的发送,以及从CAN总线到应用层的接收。各组件分工明晰,通过标准接口进行交互,实现了解耦和重用。