BswM如何控制通信收发

发布时间:2026/7/30 21:39:55
BswM如何控制通信收发 一、参考官方文件实际上BswMBasic Software Mode Manager本身并不直接发送或接收CAN报文它只是模式管理者Mode Manager通过执行Action去控制COM、PduR、CanSM等模块从而达到允许通信或禁止通信的目的。AUTOSAR规范中BswM负责根据规则Rules仲裁模式请求并执行诸如启动/停止COM的I-PDU Group、启停PduR Routing Group等动作CanSM则负责根据ComM请求控制CAN网络状态。真正的数据发送仍由COM、PduR、CanIf、Can Driver等通信栈完成。二、理解通信协议栈一条CAN报文的发送路径SWC--RTE--Com--PduR--CanIfCanIf_Transmit--Can_Write发--Can Driver发完时触发发送完成中断--Can Controller--Can Bus--另一个ECU一条CAN报文的接收路径Can Bus--Can Controller收发器-MCU--Can DriverMCU触发中断--CanIfCanIf_RxIndication--PduR--Com--RTE--SWCBswM并不在数据流里面它负责的是通过执行Action去控制COM、PduR、CanSM等模块。BswM ----------------- | | | COM PduR CanSMBswM控制是否允许通信而不控制报文如何发送。三、BswM控制通信主要的三种方式1、控制COM的IPDU Group最普遍常用COM里面所有报文都会属于某个IPDU Group。BswM可以执行MODE:ON Com_IpduGroupStart(); COM开始发送所有TxPDU COM开始接收所有RxPDU MODE:OFF Com_IpduGroupStop(); COM不再发送 COM收到数据直接丢弃 收发已经关闭这是BswM最经典的通信控制方式。BswM负责启动/停止COM的I-PDU Group并可同时控制相关信号的Deadline Monitoring。2、控制PduR Routing Group不常用通信流程COM--PduR--CanIfPduR负责路由。BswM执行PduR_EnableRouting(); 正常发送 COM ↓ PduR ↓ (TxRoutingGroup1) CanIf BswM执行PduR_DisableRouting(); Routing断开 COM ↓ PduR ↓ XXXXX 断开 CanIf COM虽然发送但发不出去 接收同理 CanIf ↓ PduR ↓ XXXXX 断开 COM 数据不会上传 即Routing Group关闭以后通信停止3、控制CanSM控制CAN网络这一种控制方式更加底层。在AUTOSAR中ComM向CanSM请求通信模式CanSM负责切换CAN控制器及收发器状态并把状态变化通知BswMBswM据此执行进一步动作。CanSM 并不直接写寄存器 CanSM 通过 CanIf 和 Can Driver 去控制 Controller CAN Controller的常见状态有 STOPPED STARTED SLEEP(部分支持低功耗模式) CanSM ↓ CanIf_SetControllerMode() ↓ Can DriverMCAL ↓ Can_SetControllerMode() ↓ CAN Controller硬件CanSM 并不是直接操作硬件而是通过 CanIf 和 MCAL Can Driver 将 CAN Controller 切换到 STARTED、STOPPED 或部分硬件支持的SLEEP 等状态从而实现 CAN 网络的启动、停止和休眠。MCAL CAN Mailbox实际上 Mailbox 就属于CAN Controller的一部分。还需注意区分CAN Controller和CAN TransceiverCAN收发器CAN ControllerCAN控制器的作用CAN协议处理Mailbox管理FIFO管理CRC仲裁Filter接收过滤中断它属于 MCU 内部的一个硬件外设。CAN TransceiverCAN收发器的作用把 MCU 的数字信号转换成 CANH/CANL 差分信号。Controller 管协议Transceiver 管电平。四、图文总结Application ↓ ComM │ Request FULL/NO COMM ↓ CanSM │ Start/Stop CAN Controller ↑ BswM ┌─────────────┼─────────────┐ │ │ │ ↓ ↓ ↓ Start/Stop Enable/Disable Request COM I-PDU PduR Routing Communication Group Group Mode │ │ └──────► 通信数据路径 ◄──────┘