EtherCAT从站协议栈---- sampleappl.c 文件解析

VIPEtherCAT从站协议栈---- sampleappl.c 文件解析
这个源文件实际上包含该项目的入口函数main函数。那么如何找到入口函数呢?可以进入debug的simulator模式,选中run to main(),当执行完启动文件startup_cm3.s后就进入了main函数(注意在main函数之前还进入了SystemInit函数),如下图所示:这个main函数主要架构如下:int main(void) { HW_Init(); /*PDI(过程数据接口)初始化,这里用的是MCI接.
开通可读全文 ·3k 人阅读
最低0.47元/天 解锁文章

这个源文件实际上包含该项目的入口函数main函数。

那么如何找到入口函数呢?

可以进入debug的simulator模式,选中run to main(),

当执行完启动文件startup_cm3.s后就进入了main函数(注意在main函数之前还进入了SystemInit函数),

如下图所示:

 

这个main函数主要架构如下:

int main(void) 
{ 
   HW_Init();                    /*PDI(过程数据接口)初始化,这里用的是MCI接口*/
   MainInit();                   /*主函数初始化包含:ESC  和COE   */ 
   bRunApplication = TRUE;       /*处于运行状态标志*/ 
   do 
   { 
       MainLoop();                     /*主循环函数,实现周期性和非周期性数据交换*/ 
   } while (bRunApplication == TRUE);  /*检查是否处于运行状态*/    
  
   HW_Release();     //无意义的函数 
 
   return 0;         //设置正确返回 
} 

下面来依次看各个函数。

HW_Init(void)函数,定义了PDI接口,定义了ESC到PDI中断的映射:

ESC的PDI(过程数据接口)有这几种情况:

1. Up to 32 bit digital I/O——32位数字量I/O

2. Serial Peripheral Interface ——SPI总线

3.  8/16-bit synchronous/asynchronous Microcontroller Interface ——MCI接口

4. With FPGA, specific on-board-bus——带FPGA的,特定的on-board-bus

在倍福的手册中也可以看到0x0140寄存器描述了PDI过程数据接口的几种情况。

过程数据和参数是通过ESC上的DPRAM来交互的。为了保证数据的一致性,ESC硬件上会有一些 机制,比如同步管理器等。

HW_Init函数的解读也可以参考 https://blog.csdn.net/qq_15157841/article/details/51789250

UINT16 HW_Init(void)
{  
    UINT32 intMask = 0;
    pEsc = (unsigned short *)ESC100StartAddress; //(unsigned short)MAKE_PTR_TO_ESC;定义指针pEsc,指向ESC物理内存起始地址    
    UINT16 u16PdiCtrl = 0;
    /* we have to wait here, until the ESC is started */
    do
    {
        HW_EscReadWord(u16PdiCtrl,ESC_PDI_CONTROL_OFFSET);//ESC_PDI_CONTROL_OFFSET==0x0140
    } while (((u16PdiCtrl & 0xFF) < 0x8) || ((u16PdiCtrl & 0xFF) > 0xD) );//过程数据接口需要是MCI接口
 
 
    HW_EscWriteDWord(intMask, ESC_AL_EVENTMASK_OFFSET);//ESC_AL_EVENTMASK_OFFSET==0x0204  AL Event masking of the AL Event Request register Events for mapping to PDI IRQ signal
 
    /* enable the ESC-interrupt microcontroller specific,
        the macro ENABLE_ESC_INT should be defined in ecat_def.h */
    //------------ENABLE_ESC_INT();
    
    return 0;
}

其中0x0204寄存器定义如下: 

MainInit(void)函数,定义了EtherCAT从站接口,COE(CANopen Over EtherCAT)相关的配置。

/
/**
 \param     pO
VIP Ethercat 硬件初始化 HW_Init(void) 函数 HW_Init(void) \return 0 if initialization was successful ----------------- 返回值为0 表示初始化成功 \brief This function initialize the EtherCAT Slave Interface. -------------------- 此函数用于初始化EtherCAT从接口。 UINT16 HW_Init(void) { UI... 开通可读全文·2.1k 阅读·0 点赞·6 收藏 阅读全文

相关推荐

EtherCAT从站协议栈核心模块解析——以sampleappl.c为例

本文以EtherCAT从站协议栈的核心文件sampleappl.c为例,深入解析了从站软件的生命周期与核心模块。文章详细拆解了main函数的三大阶段:硬件初始化、协议栈与对象字典配置,以及驱动实时数据交换的主循环,并探讨了同步参数配置与实战调试技巧,为开发者理解EtherCAT从站内部工作机制提供了清晰指引。

2a4s6d8f0g的博客 316

SOES(EtherCAT)从站API梳理

【代码】SOES(EtherCAT)从站API梳理。

m0_59091453的博客 1395

EtherCAT从站开发实战:手把手解析sampleappl.c核心函数(附调试技巧)

本文深入解析EtherCAT从站开发中的sampleappl.c核心函数,包括硬件初始化、主循环处理等关键模块的实现细节。通过实战案例分享示波器抓包、寄存器监控等调试技巧,帮助开发者快速掌握EtherCAT从站协议栈的开发与优化方法,提升工业自动化系统的开发效率。

weixin_29239279的博客 232

基于RX72M实现ETG.5003标准EtherCAT从站:CDP、FoE与动态PDO映射实战

在工业自动化与运动控制领域,实时以太网通信协议是实现设备高效协同的关键技术。EtherCAT协议凭借其独特的分布式时钟和“飞读飞写”机制,提供了微秒级的同步精度,成为高端工业控制系统的核心。其技术价值在于通过标准化的设备描述和过程数据交换,构建了高度确定性和灵活性的网络架构。这一架构广泛应用于半导体制造、机器人控制、包装机械等对实时性要求严苛的场景。本文聚焦于**ETG.5003半导体设备配置文件**这一具体标准,深入探讨如何基于瑞萨RX72M微控制器,实现一个符合该规范的工业级从站。核心实践包括构建**通

weixin_33843947的博客 381

基于RX72M的EtherCAT从站开发:ETG.5003对象字典与动态PDO配置详解

在工业自动化领域,EtherCAT(以太网控制自动化技术)以其卓越的实时性和同步精度成为高性能运动控制的首选。其核心在于标准化的数据交互机制,通过对象字典为每个设备提供统一的数据接口,而设备配置文件则确保了同类设备的互操作性。这种设计不仅实现了微秒级的精准控制,更通过过程数据对象(PDO)映射机制,将关键数据纳入高速循环通信,极大提升了系统响应速度。以半导体制造设备为例,ETG.5003标准定义了其专用的设备配置文件,规范了从设备标识、同步管理到参数备份等一系列关键对象。本文将深入解析如何基于瑞萨RX72M

dgoh41514的博客 396

基于EtherCAT FoE协议与TwinCAT实现RX72M固件在线更新实践

在工业自动化与嵌入式开发领域,固件更新是保障设备长期可靠运行与功能迭代的关键技术。其核心原理在于通过网络或通信协议,在不拆卸设备的情况下,远程写入新的程序代码。这项技术的价值在于极大提升了设备的可维护性,降低了现场维护成本与停机时间,广泛应用于工业控制器、物联网终端、智能传感器等场景。其中,EtherCAT作为一种高性能实时工业以太网协议,其配套的FoE(File Access over EtherCAT)协议专为文件传输设计,为固件更新提供了标准化、高可靠性的通道。本文将结合瑞萨RX72M微控制器与倍福T

weixin_33937913的博客 427

Python 上位机开发

首先,什么是上位机?上位机通常是指可以与下位机(如单片机、传感器等硬件设备)进行通信和交互,实现数据采集、控制指令发送以及数据处理和展示的计算机程序。 Python 作为一种高级编程语言,在开发上位机方面具有诸多优势。它拥有丰富的第三方库,使得开发过程变得相对简单和高效。

weixin_46807151的博客 4288

采用MPU6050的手势遥控器

随着社会的发展与进步,电子产品日益更新,个人家庭迎来了越来越多的智能家电。然而,现在的智能电子设备产品的遥控器多数都是按键形的。操作繁琐不直观,学习成本大。并且对于有老人小孩的家庭,给他们的操作带来了巨大的障碍。手势遥控器是指利用简单的手势来指挥电子设备,获得便捷的操作体验。让家庭成员都可以享受科技发展带来的福利。MPU6050是一个运动传感器,内置陀螺仪,再由电子设备利用判断结果做出相应的响应即...

Sakura的博客小站 6598

Unity AR涂涂乐实战:用户上传图片秒变3D模型新皮肤(附完整代码)

本文详细介绍了如何在Unity AR应用中实现用户上传图片动态生成3D模型皮肤的功能,重点讲解了动态创建材质球的技术方案和性能优化策略。通过完整的代码示例,开发者可以学习到多源图片处理、移动端内存管理以及AR场景适配等核心技巧,快速打造高性能的儿童教育类AR应用。

weixin_31509753的博客 366

PLC凸轮开关指令编程应用——控制算法

凸轮开关指令的作用是在PLC程序中根据凸轮开关(Cam Switch)的状态执行不同的操作。凸轮开关通常是机械式的开关装置,它的位置会随着机械运动的变化而改变。凸轮开关的状态可以用来检测机器的位置、角度或其他相关信息,从而触发相应的控制动作。总结起来,凸轮开关指令是PLC编程中常用的一种控制算法,通过检测凸轮开关的状态来触发相应的操作。本文将介绍凸轮开关指令的应用和相应的控制算法,并提供相关的源代码示例。在这个示例中,凸轮开关状态的值代表不同的位置,根据凸轮开关状态的不同,执行相应的动作。

LiJavascript的博客 1030

2025年GESP3月认证C++五级真题解析

小 A 有 2n 件物品,小 B 和小 C 想从小 A 手上买走这些物品。对于第 i 件物品,小 B 会以 bi 的价格购买,而小 C 会以 ci 的价格购买。对于所有测试点,保证 1 <= T <= 100, 2 <= g < p <= 10^9, g, p 为整数, p 为质数。对于所有测试点,保证 1 <= n <= 10^5, 0 <= bi, ci <= 10^9, bi, ci 为整数。对于另外 50 % 的测试点,保证 n <= 100000, 0 <= bi, ci <= 10^9。

lan_in的博客 1028

OpenCV-Python实战(3)——OpenCV中绘制图形与文本

OpenCV 是一个的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。本文介绍了 OpenCV 提供的与绘制图形和文本相关的函数。在图形方面,我们了解了如何绘制基本图形(直线、矩形和圆形等)以及高级图形(剪裁线、箭头、椭圆和多边形)。在文本方面,我们了解了如何绘制文本以及 OpenCV 库中的所有可用字体。

盼小辉丶的博客 2万+

【AI智能体】Coze 数据库从使用到实战操作详解

Coze 数据库使用到实战详解

congge 5900

vue2 - elementUI表格table树形结构复选框勾选父子联动示例,el-table树状表格tree复选框checkbox多选框全选/反选取消children(当子级全选中,父级自动勾选)

vue2,elementui,el-table树状表格多选,树形结构结合多选框使用,实现单选父子联动全选反选,勾选联动父级勾选,表格多选check父子联动,table表格children如何嵌入复选框,el-table使用多选框与树形数据写一个有半选全选功能的表格,el-table树形表格实现复选框多选效果,表格树状结构多选,每一个row都可以选中并且联动全选按钮,table选父带子选子带父,树形数据与懒加载,Table表格树形结构多选框选中父级时会选中子级,elementUI表格里树形结构嵌套复选框全选全

✅ 精选推荐文章 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: Ethercat 硬件初始化 HW_Init(void)
下一篇: 2021年2月16日 【Jiawei_Z】C语言基本功--结构体详解1(结构体定义、成员赋值的2种写法)

双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —
JIAWEI_Z
博客等级 码龄14年 3159粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JIAWEI_Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值