6487|4

1366

帖子

6

TA的资源

版主

楼主
 

[MCU] [先楫HPM6750EVK2测评二] hpm6750跑上soem ethercat主机协议栈 [复制链接]

 

 先楫hpm6750作为高性能MCU,跑MCU常见各种协议栈是不成问题。楼主在工作项目上用到ethercat,打算用hpm6750练手这个协议栈,于是就有了这个移植过程。

 为了避免os带来的各种移植问题,楼主先用裸机跑soem这个协议栈,调试好方便嵌入到鸿蒙liteos-m中。

 hpm6750作为ethercat主机,那么也就需要一个从机与其通信。楼主并没有相关驱动器以及IO模块,还好想到之前的xmc4800 relax英飞凌官方板,说干就干。此贴不说明ethercat协议栈相关原理,需要的自行了解;只说明移植过程以及使用相关说明。

 英飞凌xmc4800部分代码,在这里不进行说明。楼主开源出来的仓库有英飞凌的ethercat从机代码工程,有需要自行了解。

 一、移植说明:

 soem协议栈部分耦合度并不强,对外只需要对接协议帧收发接口,以及提供64位us精度的时间基准,还有一个us延时函数即可。其中协议帧收发接口需要自己调试,建议可以配合Wireshark工具查看协议帧收发。

 (1)us延时函数

  在这里楼主使用裸机,使用risv内核的机器周期计数器,sdk里面已经对其进行封装了us和ms延时函数,我们在其封装一个函数方便调用。
 

 

     (2)64位us精度的时间基准

  这块hpm上使用极其方便,按没有64位定时器的MCU,需要用两个通用32位定时器进行级联构成64位。但是hpm提供了两种外设方便的方案,一个是使用其64位的内核机器定时器mchtmr,另外一个是使用精确时间协议模块PTPC。楼主这里都使用这两种方案,默认使用机器定时器。同样SDK都有对其封装了相应的接口,与之调用即可。

   

 

  (3)协议帧收发接口

  这块hpm上sdk也封装了对应以太网描述符相关的收发接口。接受上可以使用轮询以及中断接口,这里楼主使用了轮询接口。

 

 

 

        调试过程就没啥记录了,调试相关以太网的时候,配合相关工具能提高效率,比如Wireshark,在主机find从机设备的时候,看下相关以太网包可以快速找到问题。


 

最新回复

大佬可以分享一下调试过程以及注意事项吗    详情 回复 发表于 2023-10-20 11:02
点赞 关注
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复
举报

1366

帖子

6

TA的资源

版主

沙发
 

 二、与从站xmc4800通信

 与其通信必须得先配置好从机设备的各种描述参数,而其参数可以在对应的厂家提供的xml文件,作用是描述从站设备,通过对 xml 文件的详细了解,直接写对应的控制指令,对从站做出配置。

 接下来楼主配合其xml文件和代码配置进行说明

 (1)从站Man ID name等设备信息配置

 通过该查表数组修改

   以上信息可以在厂家xml文件看到,找到实际的硬件型号等信息,前三个nan id name如下对应关系,查询好进行插入即可。

 

 

 查表数组中的SM2a和SM2f SM3a和SM3f,对应sm对象中的第三个和第四个,展开可看到

 sm2a,sm3a 分别对应 xml 中的


  sm2f是enable和controlbyte的组合, 即enable在前controlbyte在后0x00010064,sm3f 类似, 参照上图填写。FM0AC 和 FM1AC 对应是否有输入输出,若有填 1。

 上面的Ibit和Obit是PDO对应的RxPdo和TxPdo中的不同对象的数据类型长度。比如RxPdo的对象中对应4个16位长度,8个bool长度,一共72bit,对应的TxPdo也是72位。

    

        其实如果觉得这个配置太繁琐,可以刚在主机寻找从机,在从机safeop下,从机会下发相关的设备信息给从机,我们可以进而打印查看,写入到对应的查表即可。

 

 

 (2)对象字典映射。

  不同的控制对象需要对应不同的对象字典,此处需要查看手册和 xml 文件做对应的配置。

  对 PDO 进行配置,分别配置输入和输出。上面填写的 Ibit 和 Obit 与此处重映射的输入输出有关。一定得对应上。不然主站无法进入 OP 状态。

  这里简单对输出简单说明。

 

  根据源码可以知道RxPDO分配对象是0x1c12,先对其子项0初始化清零,表示该对象为分配子对象,然后子项配置对象字典,配置为0x1600,然后再子项0写入1,表示 0x1c12 配置了 1 个对象字典。

   RXPDO映射对象组1的对象字典为0x1600,那么在这个对象字典下需要配置12个子项对象字典,在这里说明下第一个子项字典对象0x70000110的意思,含义是驱动器的控制字,00代表该对象字典的subitem,最后10为该对象字典的BIT长度,0x10即为16BIT,也就是2个字节。

    

        那么映射好字典对象,需要再对应定义输入输出结构体。以此映射完毕。

 

 

个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 
 

回复

1366

帖子

6

TA的资源

版主

板凳
 

  楼主写段控制点灯代码,一对xmc4800的8个led进行跑马灯,一个是xmc4800的按下按键,hpm6750对应led亮灭。

 

      

  效果如下,说明主从机ethercat通信成功。

 

 https://www.bilibili.com/video/BV1LY41127Wr/?spm_id_from=333.999.0.0
 

个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 
 

回复

1366

帖子

6

TA的资源

版主

4
 

仓库:https://gitee.com/RCSN/hpm6750evk2_ethercat_master   欢迎star fork


 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 

大佬可以分享一下调试过程以及注意事项吗 

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表