一、从机代码
从机字典

/* index 0x1400 :   Receive PDO 1 Parameter. */UNS8 slave_objdict_highestSubIndex_obj1400 = 6; /* number of subindex - 1*/UNS32 slave_objdict_obj1400_COB_ID_used_by_PDO = 0x200;  /* 512 */UNS8 slave_objdict_obj1400_Transmission_Type = 0x0;   /* 0 */UNS16 slave_objdict_obj1400_Inhibit_Time = 0x0; /* 0 */UNS8 slave_objdict_obj1400_Compatibility_Entry = 0x0;   /* 0 */UNS16 slave_objdict_obj1400_Event_Timer = 0x0;  /* 0 */UNS8 slave_objdict_obj1400_SYNC_start_value = 0x0;  /* 0 */subindex slave_objdict_Index1400[] = {{ RO, uint8, sizeof (UNS8), (void*)&slave_objdict_highestSubIndex_obj1400, NULL },{ RW, uint32, sizeof (UNS32), (void*)&slave_objdict_obj1400_COB_ID_used_by_PDO, NULL },{ RW, uint8, sizeof (UNS8), (void*)&slave_objdict_obj1400_Transmission_Type, NULL },{ RW, uint16, sizeof (UNS16), (void*)&slave_objdict_obj1400_Inhibit_Time, NULL },{ RW, uint8, sizeof (UNS8), (void*)&slave_objdict_obj1400_Compatibility_Entry, NULL },{ RW, uint16, sizeof (UNS16), (void*)&slave_objdict_obj1400_Event_Timer, NULL },{ RW, uint8, sizeof (UNS8), (void*)&slave_objdict_obj1400_SYNC_start_value, NULL }};/* index 0x1600 :   Receive PDO 1 Mapping. */UNS8 slave_objdict_highestSubIndex_obj1600 = 1; /* number of subindex - 1*/UNS32 slave_objdict_obj1600[] = {0x20010008 /* 536936456 */};subindex slave_objdict_Index1600[] = {{ RW, uint8, sizeof (UNS8), (void*)&slave_objdict_highestSubIndex_obj1600, NULL },{ RW, uint32, sizeof (UNS32), (void*)&slave_objdict_obj1600[0], NULL }};/* index 0x1800 :   Transmit PDO 1 Parameter. */UNS8 slave_objdict_highestSubIndex_obj1800 = 6; /* number of subindex - 1*/UNS32 slave_objdict_obj1800_COB_ID_used_by_PDO = 0x180;  /* 384 */UNS8 slave_objdict_obj1800_Transmission_Type = 0x5;   /* 1 */UNS16 slave_objdict_obj1800_Inhibit_Time = 0x0; /* 0 */UNS8 slave_objdict_obj1800_Compatibility_Entry = 0x0;   /* 0 */UNS16 slave_objdict_obj1800_Event_Timer = 0x0;  /* 0 */UNS8 slave_objdict_obj1800_SYNC_start_value = 0x0;  /* 5 */subindex slave_objdict_Index1800[] = {{ RO, uint8, sizeof (UNS8), (void*)&slave_objdict_highestSubIndex_obj1800, NULL },{ RW, uint32, sizeof (UNS32), (void*)&slave_objdict_obj1800_COB_ID_used_by_PDO, NULL },{ RW, uint8, sizeof (UNS8), (void*)&slave_objdict_obj1800_Transmission_Type, NULL },{ RW, uint16, sizeof (UNS16), (void*)&slave_objdict_obj1800_Inhibit_Time, NULL },{ RW, uint8, sizeof (UNS8), (void*)&slave_objdict_obj1800_Compatibility_Entry, NULL },{ RW, uint16, sizeof (UNS16), (void*)&slave_objdict_obj1800_Event_Timer, NULL },{ RW, uint8, sizeof (UNS8), (void*)&slave_objdict_obj1800_SYNC_start_value, NULL }};/* index 0x1A00 :   Transmit PDO 1 Mapping. */UNS8 slave_objdict_highestSubIndex_obj1A00 = 1; /* number of subindex - 1*/UNS32 slave_objdict_obj1A00[] = {0x20000008    /* 536870920 */};subindex slave_objdict_Index1A00[] = {{ RW, uint8, sizeof (UNS8), (void*)&slave_objdict_highestSubIndex_obj1A00, NULL },{ RW, uint32, sizeof (UNS32), (void*)&slave_objdict_obj1A00[0], NULL }};/* index 0x2000 :   Mapped variable pdo1TransmitDate */subindex slave_objdict_Index2000[] = {{ RW, uint8, sizeof (UNS8), (void*)&pdo1TransmitDate, NULL }};/* index 0x2001 :   Mapped variable pdo1ReceiveDate */subindex slave_objdict_Index2001[] = {{ RW, uint8, sizeof (UNS8), (void*)&pdo1ReceiveDate, NULL }};

主要是索0x1800中的值UNS8 slave_objdict_obj1800_Transmission_Type = 0x5; /* 1 */设置成1-253代表接收到1-253个同步帧从机发送PDO通信。
主程序:

int main(void)
{ u8 key; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168);    //初始化延时函数uart_init(115200);  //初始化串口波特率为115200LED_Init();                    //初始化LED KEY_Init();                //按键初始化  cantimer_init(10-1,8400-1);     can_init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,CAN_Mode_Normal);//CAN初始化环回模式,波特率500Kbps    setNodeId(&slave_objdict_Data, 0x01);setState(&slave_objdict_Data, Initialisation);setState(&slave_objdict_Data, Pre_operational);  while(1){key=KEY_Scan(0);if(key==KEY0_PRES)//KEY0按下,发送一次数据{pdo1TransmitDate++;}else if(key==WKUP_PRES)//WK_UP按下,改变CAN的工作模式{      }                   } }

二、主机代码
主机字典:

/* index 0x1400 :   Receive PDO 1 Parameter. */UNS8 master_objdict_highestSubIndex_obj1400 = 6; /* number of subindex - 1*/UNS32 master_objdict_obj1400_COB_ID_used_by_PDO = 0x181;    /* 385 */UNS8 master_objdict_obj1400_Transmission_Type = 0x0;  /* 0 */UNS16 master_objdict_obj1400_Inhibit_Time = 0x0;    /* 0 */UNS8 master_objdict_obj1400_Compatibility_Entry = 0x0;  /* 0 */UNS16 master_objdict_obj1400_Event_Timer = 0x0; /* 0 */UNS8 master_objdict_obj1400_SYNC_start_value = 0x0; /* 0 */subindex master_objdict_Index1400[] = {{ RO, uint8, sizeof (UNS8), (void*)&master_objdict_highestSubIndex_obj1400, NULL },{ RW, uint32, sizeof (UNS32), (void*)&master_objdict_obj1400_COB_ID_used_by_PDO, NULL },{ RW, uint8, sizeof (UNS8), (void*)&master_objdict_obj1400_Transmission_Type, NULL },{ RW, uint16, sizeof (UNS16), (void*)&master_objdict_obj1400_Inhibit_Time, NULL },{ RW, uint8, sizeof (UNS8), (void*)&master_objdict_obj1400_Compatibility_Entry, NULL },{ RW, uint16, sizeof (UNS16), (void*)&master_objdict_obj1400_Event_Timer, NULL },{ RW, uint8, sizeof (UNS8), (void*)&master_objdict_obj1400_SYNC_start_value, NULL }};/* index 0x1600 :   Receive PDO 1 Mapping. */UNS8 master_objdict_highestSubIndex_obj1600 = 1; /* number of subindex - 1*/UNS32 master_objdict_obj1600[] = {0x20040008   /* 537133064 */};subindex master_objdict_Index1600[] = {{ RW, uint8, sizeof (UNS8), (void*)&master_objdict_highestSubIndex_obj1600, NULL },{ RW, uint32, sizeof (UNS32), (void*)&master_objdict_obj1600[0], NULL }};/* index 0x1800 :   Transmit PDO 1 Parameter. */UNS8 master_objdict_highestSubIndex_obj1800 = 6; /* number of subindex - 1*/UNS32 master_objdict_obj1800_COB_ID_used_by_PDO = 0x201; /* 513 */UNS8 master_objdict_obj1800_Transmission_Type = 0x0;  /* 0 */UNS16 master_objdict_obj1800_Inhibit_Time = 0x0;    /* 0 */UNS8 master_objdict_obj1800_Compatibility_Entry = 0x0;  /* 0 */UNS16 master_objdict_obj1800_Event_Timer = 0x0; /* 0 */UNS8 master_objdict_obj1800_SYNC_start_value = 0x0; /* 0 */subindex master_objdict_Index1800[] = {{ RO, uint8, sizeof (UNS8), (void*)&master_objdict_highestSubIndex_obj1800, NULL },{ RW, uint32, sizeof (UNS32), (void*)&master_objdict_obj1800_COB_ID_used_by_PDO, NULL },{ RW, uint8, sizeof (UNS8), (void*)&master_objdict_obj1800_Transmission_Type, NULL },{ RW, uint16, sizeof (UNS16), (void*)&master_objdict_obj1800_Inhibit_Time, NULL },{ RW, uint8, sizeof (UNS8), (void*)&master_objdict_obj1800_Compatibility_Entry, NULL },{ RW, uint16, sizeof (UNS16), (void*)&master_objdict_obj1800_Event_Timer, NULL },{ RW, uint8, sizeof (UNS8), (void*)&master_objdict_obj1800_SYNC_start_value, NULL }};/* index 0x1A00 :   Transmit PDO 1 Mapping. */UNS8 master_objdict_highestSubIndex_obj1A00 = 1; /* number of subindex - 1*/UNS32 master_objdict_obj1A00[] = {0x20000008  /* 536870920 */};subindex master_objdict_Index1A00[] = {{ RW, uint8, sizeof (UNS8), (void*)&master_objdict_highestSubIndex_obj1A00, NULL },{ RW, uint32, sizeof (UNS32), (void*)&master_objdict_obj1A00[0], NULL }};/* index 0x2000 :   Mapped variable pdo1TransmitDate */subindex master_objdict_Index2000[] = {{ RW, uint8, sizeof (UNS8), (void*)&pdo1TransmitDate, NULL }};/* index 0x2004 :   Mapped variable pdo1ReceiveDate */subindex master_objdict_Index2004[] = {{ RW, uint8, sizeof (UNS8), (void*)&pdo1ReceiveDate, NULL }};

索引 0x1400中接收:
主程序

int main(void)
{ u8 key; Message msg;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168);    //初始化延时函数uart_init(115200);  //初始化串口波特率为115200LED_Init();                    //初始化LED KEY_Init();                //按键初始化  cantimer_init(10-1,8400-1);     can_init(CAN_SJW_1tq,CAN_BS2_6tq,CAN_BS1_7tq,6,CAN_Mode_Normal);//CAN初始化环回模式,波特率500Kbps    setNodeId(&master_objdict_Data, 0x00);setState(&master_objdict_Data, Initialisation);setState(&master_objdict_Data, Operational);   while(1){key=KEY_Scan(0);if(key==KEY0_PRES){masterSendNMTstateChange(&master_objdict_Data,0x01,NMT_Start_Node);}else if(key==KEY1_PRES){      sendPDOrequest(&master_objdict_Data,0x1400);}else if(key==KEY2_PRES){     msg.cob_id = (UNS16)0x80;msg.len = (UNS8)0x00;msg.rtr = (UNS8)0;canSend(&master_objdict_Data.canHandle,&msg );    }   else if(key==WKUP_PRES){     }            } }

三、操作
1、首先按下Key0键启动从节点一
2、然后按Key2键发送同步帧,发送5次后从机同步数据。
四、工程文件
工程文件

canOpen学习六之canOpen应用实现主从机PDO循环同步通信相关推荐

  1. nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新

    nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新 主机连接 nrf52832 SDK中主机连接从机需要使用 sd_ble_gap_connect(ble_gap_addr_t const ...

  2. canOpen学习十之canOpen应用实现紧急事件发送

    一.简介 所谓紧急事件就是系统出现错误后需要告知其他设备我出错了,其他设备做出对应的反应. 紧急事件用到的索引是0x1001和0x1003,下面详细介绍一下这两个索引 对象0x1001: 对象0x10 ...

  3. linux canopen软件,CANopen学习笔记

    1. TPDO和RPDO都是针对从站来说的,协议上没有有讲任何一个关于主站的概念,协议就只是定义从站,没有定义主站任何东西. TPDO:从站->主站 RPDO:主站->从站 2. PDO的 ...

  4. CANOpen学习(一)

    CANOpen学习(一) CANOpen心跳功能学习 修改串口PIN脚和CAN的PIN脚 原本timer中发送心跳包的相关逻辑 修改心跳发送逻辑 修改定时器周期为10us 修改timer.c文件中发送 ...

  5. CANopen学习笔记

    CANopen学习笔记 文章目录 CANopen学习笔记 1.NMT 1.1.NMT的Boot_up (节点上线报文) 1.2.NMT 节点状态与心跳报文 1.3.NMT节点守护 1.4 .NMT节点 ...

  6. CUBEMX+CANOPEN教程四:canopen小结

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xingzhewanfu/article/details/89196626 一.基础理论知识 用户手册 ...

  7. Apollo代码学习(六)—模型预测控制(MPC)_follow轻尘的博客-CSDN博客_mpc代码

    Apollo代码学习(六)-模型预测控制(MPC)_follow轻尘的博客-CSDN博客_mpc代码

  8. 艾伟:C#多线程学习(六) 互斥对象

    本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个线程 C#多线程学习(三) 生产者和消费者 C#多线程学习(四) 多线程的自动管理(线程池) C#多线程学习( ...

  9. C#多线程学习(六) 互斥对象

    C#多线程学习(六) 互斥对象 原文链接:http://kb.cnblogs.com/page/42533/ 本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个 ...

  10. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

最新文章

  1. 义教资料均衡验收计算机室解说词,义教均衡迎检现场会导引解说词
  2. 第二次尝试修复Hbase2出现Region不一致,使用 HBCK2 - 2021.11.15
  3. Silverlight Gantt甘特图项目管理解决方案
  4. CodeProject每日精选: Progress controls 进度条
  5. orm2 中文文档 3.1 模型属性
  6. 新东方年会节目员工吐槽公司问题 俞敏洪:奖励12万
  7. TrainingModel(3)
  8. 技术状态管理(四)-技术状态控制
  9. 一键去除AutoCAD图形乱码的问题
  10. JAVA GUI创作简易记牌器
  11. golang调用aliyun的语音通话
  12. 手机录音m4a怎么转换成mp3
  13. AUTOCAD——减少样条曲线控制点数、CAD进阶练习(三)
  14. enumerate使用
  15. sd/mmc驱动框架-(三)mmc子系统的数据结构
  16. 微信小程序开发之webview组件内网页实现微信原生支付
  17. 仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)
  18. 所有ICO项目100%都会归零!STO证券型代币才是区块链融资正确打开方式
  19. 魔兽世界终极版(C++程序设计第6周)
  20. Bootstrap3 带边框的表格样式

热门文章

  1. Unity内置Shader解读1——Bumped Diffuse
  2. 1.1你是谁?你从哪来?你到哪去? -交给学习来解答
  3. 新世达380修改服务器密码,新时达AS380利用小键盘调试说明
  4. 蓝色理想的flex教材不能在flex Development做不能使用,我整理一下供初学者参考
  5. Barefoot P4加速SDN
  6. [055] SSL 3.0曝出Poodle漏洞的解决方案-----开发者篇
  7. ConcurrenHashMap源码(JDK1.7)
  8. 大型网站--负载均衡架构
  9. 人工智能研究中心快递柜——代码分析十
  10. Linux和Windows双系统gpt,Windows+Ubuntu双系统GPTMBR引导设置