CanFestival源码学习笔记

CANOpen从机
setNodeId(&TestSlave_Data,nodeID);
setState(&TestSlave_Data,Initialisation);
setState(&TestSlave_Data,Operational);

这三句话非常重要,是Canopen协议栈的入口。
nodeID是从机地址,取值范围可以是0x01至0x7F。
协议栈初始化时,状态会按照Initialisation->Pre_operational->Operational的顺序变化。

主要的函数调用关系如下:
setState->switchCommunicationState->StateOrStop。
在StateOrStop函数中对各个服务进行初始化,包括BootUp、SDO、Emergency、SYNC、LifeGuard、PDO和LSS。初始化过程中分别调用对应的Start或Stop函数。调用顺序是:startSYNC、lifeGuardInit、emergencyInit、slaveSendBootup,最后是PDOInit。
在lifeGuardInit方法中,会对心跳报文的发送函数(ProducerHeartbeatAlarm)进行初始化。在slaveSendBootup方法中,会发送上线报文,数据内容是0x00。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值