应用层发送的信号值LED_ON怎么传递到Can总线上

1 通信发送

1.1 LED_ON如何发送到Can总线的实例分析

信号就是应用层要传送的消息,比如LED的亮灭状态信号;应用层SWC想把 点亮LED灯的信号通过Can总线发出去,就需要通过调用Rte_Write_IfLight_DeOnOffStatus(LED_ON)来更新系统信号值,RTE将进一步就是调用 Com_SendSignal(信号Handle, LED_ON)来更新信号值;具体可参看文章「COM4-通信发送代码Com_SendSignal分析」。备注:PduInfo指针指向的PduInfo结构类型定义为如下:

typedef uint16 PduIdType;
typedef uint16 PduLengthType;
typedef struct {
 uint8 *SduDataPtr;   // payload
 PduLengthType SduLength; // length of SDU
} PduInfoType;

那么LED_ON这个值会存在SduDataPtr指针指向的I-PDU缓存中。

具体介绍如下:PDU 就是协议数据单元,用于COM下面的各层之间进行传输。PDU包含各个信号Signals,也就是应用发送的信号值存储在COM的I-PDU缓存中,然后COM通过调用PduR_ComTransmit(Pdu Handle, PduInfo指针),把I-PDU发送给PduR,PduR通过路由表转发给CanIf模块,即调用CanIf_Transmit(Pdu Handle, PduInfo指针);CanIf模块做了一些列的错误检查后,如果邮箱HW mailbox空闲可用,则调用Can_Write( hth, PduInfo指针 ),经过Can总线的仲裁规则仲裁后,赢得仲裁的报文发送到Can总线上(一般是CanID越小优先级越高),最后LED_ON这个信号值就会出现在Can总线上了

1.2 通信栈发送模块的组成

1.3 发送函数之间的调用

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值