恩智浦i.MX RT1180 EtherCAT外设中SM FMMU功能介绍及应用

描述

NXP的i.MX RT1180 crossoverMCU具有Arm Cortex-M7(CM7)和Cortex-M33(CM33)双内核,CM7内核的运行速度可达800 MHz,CM33内核的运行频率可达240 MHz,并拥有1.5 MB的片上RAM。该系列支持多种协议,实现了实时以太网与工业4.0系统之间的通信桥梁。并通过集成的EdgeLock Secure Enclave提供更高级的安全性。

RT1180包含了一个集成的Gbit/s时间敏感网络(TSN)交换机和EtherCAT从控制器(ESC)。这使其非常适合工业和汽车通信应用。MCU还支持使用MCUXpresso生态系统,其中包括SDK、IDE选择以及安全配置和配置工具,可以帮助工程师实现快速开发。

EtherCAT是一种高性能的实时以太网通信协议。它通常用于工业自动化领域的实时控制和通信,如伺服电机控制等。Beckhoff于2003年开发了EtherCAT,国际电工委员会(IEC)将EtherCAT标准化为IEC61158标准。它使用以太网标准IEEE 802.3中定义的标准帧和物理层。

EtherCAT解决了自动化行业面临的具体需求,如下所示:

存在具有确定性响应时间的硬实时要求

系统通常由许多节点组成,每个节点只有少量的循环过程数据

IT管理员不调试和维护现场总线系统

i.MX RT1180 EtherCAT外设中的SM(同步管理器)和FMMU(现场总线内存管理单元)是实现高效数据通信的关键组件。它们通过优化数据交换和提升通信安全性,在工业自动化应用中发挥着重要作用。以下将对SM和FMMU的功能及应用进行详细介绍。

1. EtherCAT通信机制

在EtherCAT主站和从站搭建的系统中,主站会发出一个EtherCAT帧,所有从站都会接收该帧并且发送自身控制数据到主站。

RT1180具备两个EtherCAT端口,下图展示了主站与从站之间的传播路径。当EtherCAT主站帧到达从站时,从站从EtherCAT帧读取数据并将数据写入EtherCAT帧。这个帧会穿过每个从站,最后回到主站那里。

以太网

在EtherCAT通信过程中,有两个功能起到了很关键的作用,一个是Fieldbus Memory Management Units(FMMU) 还有一个是SyncManager(SM),Reference Manual手册中的描述稍微有点抽象,下面带大家结合实际工程看下他们是如何起作用的。

2. FMMU-Fieldbus Memory Management Units

现场总线内存管理单元(FMMU)通过内部地址映射将逻辑地址转换为物理地址。FMMU 允许对跨越多个从站的数据段使用逻辑寻址:一个数据报可以寻址多个任意分布的ESC 内的数据。

i.MX RT1180支持最大八个FMMU,由EtherCAT主站初始化。FMMU可以从EtherCAT主站定义的八个不同逻辑地址获取数据。逻辑地址是指主站中的地址空间,而物理地址则是从站中的空间。FMMU访问类型可以被配置为读,写,或者读和写。

以太网

此外,FMMU还有其他特性,例如:每个逻辑地址最多可以由一个 FMMU(读)加一个 FMMU(写)映射,或者由一个FMMU(读/写)映射。如果为同一逻辑地址配置了两个或多个 FMMU(方向相同-读或写),则使用编号较低(配置地址空间较低)的 FMMU,其他 FMMU 将被忽略。更多FMMU的特性可以参考RT1180的ReferenceManual.

3. SyncManager(SM)

SyncManager(SM)即为同步管理器,EtherCAT从站的存储空间可用于在EtherCAT主机和本地应用程序(在连接到PDI的微控制器)之间交换数据,没有任何限制。像这样使用内存进行通信有一些缺点,SyncManagers(SM)主要就是用来解决这些缺点:

无法保证数据一致性。信号量必须在软件中实现,以便以一致的方式交换数据

数据安全没有保证。软件中必须实施安全机制

EtherCAT主站和应用端都必须轮询内存,以了解对方的访问何时完成

  SM能够在EtherCAT主站和本地应用程序之间实现一致且安全的数据交换,并且会产生SM中断。SM支持两种通信模式,

模式一 Buffered Mode:

BufferedMode允许 EtherCAT 主站和本地应用程序双方随时访问通信缓冲区。消费者始终获得生产者写入的最新缓冲区数据,而生产者始终可以更新缓冲区的内容。如果缓冲区的写入速度比读出速度快,旧数据将被丢弃。这种模式常被用于周期性通信。

模式二 Mailbox Mode:

邮箱模式实现了数据交换的握手机制,因此不会丢失任何数据。每一方(EtherCAT 主站或本地应用程序)只有在另一方完成访问后才能访问缓冲区。首先,生产者写入缓冲区。然后,缓冲区被锁定无法写入,直到消费者将其读出。之后,生产者再次具有写入访问权限,而缓冲区则为消费者锁定。

4. SM和FMMU在实际工程中的使用

结合SDK中的EtherCAT digitalio工程,看一下FMMU和SM的配置。通过TwinCAT3直接读取FMMU相关的寄存器。

以太网

以太网

不难看出,在该工程中一共使能了三个FMMU,其中FMMU0的逻辑地址是0x01000000,长度为1,物理地址为0x1100,方向是写,使能。FMMU1的逻辑地址为0x01000000,长度是1,物理地址为0x1400,方向是读。FMMU0和FMMU1使用的逻辑地址都是0x01000000,上文提到过,同一个逻辑地址最多由两个FMMU分别映射为读写,或者由一个FMMU映射为可读可写。如果出现第三个FMMU映射该逻辑地址,则会失效。

FMMU2的逻辑地址为0x09000000,长度是1,物理地址为0x080d,方向是读,该物理地址中保存的是SM的状态寄存器。在通信过程中主站会不断地去获取SM的状态。

接下来再看SM的寄存器配置:

以太网

 

以太网

RT1180最多支持8个SyncManager,在该工程中一共用到了四个:

SM0起始地址为0x1000,长度为0x80,模式选择邮箱模式

SM1起始地址为0x1080,长度为0x80,模式也是邮箱模式

SM2起始地址为0x1100,长度为0x1,模式为Buffered mode

SM3起始地址为0x1400,长度为0x1,模式也是Bufferedmode

FMMU映射的物理地址,正是SM所在起始地址,FMMU写方向,对应SM主站写从站读设置,FMMU读方向,对应SM从站写主站读设置。

一般来说,SM0设置为主站输出邮箱,SM1设置为主站输入邮箱,SM2设置为主站输出过程数据(主站写),SM3设置为主站输入过程数据(主站读)。

5. SM和FMMU初始化

SM和FMMU都是由主站进行初始化,TwinCAT3中无法看到主站的具体操作,在RT1180 SDK中提供了开源EtherCAT主站SOEM的demo可以通过该demo来看下SM和FMMU是如何被初始化的。工程目录:

SDK_2_16_000_MIMXRT1180-EVKoardsevkmimxrt1180soem_examplessoem_servo_motormcm33

初始化SM:

首先主站会读取EEPROM来获取写邮箱数据长度,如果写邮箱数据长度大于0,则会对SM0和SM1进行相关参数设置。

赋值。

以太网

然后根据读取EEPROM获取SM的个数,来依次完成所有SM的参数设置。

以太网

初始化FMMU:

FMMU主要是通过以下两个函数初始化的: ecx_config_create_input_mappings, ecx_config_create_output_mappings.

此处以ecx_config_create_input_mappings函数举例:

首先会去判断SM是否小于SM最大值,并且判断当前slave是否存在输入数据(input bits),只要有1个inputbit就会配置FMMU。并判断当前SM的类型是否是Inputs类型,如果不是则判断下一个SM。

以太网

找到Inputs类型的SM之后,会根据SM中的参数来设置FMMU的相关参数。下图代码中直接将SM中的地址赋值给了FMMU的物理地址。

以太网

完成赋值之后,后面还会进行一系列操作,比如判断该从站是否还有其他Inputs类型的SM。输出FMMU的配置与输入类似。此处不再过多赘述,感兴趣的读者可以下载官方SDK阅读源码。

至此,i.MX RT1180EtherCAT外设中SM FMMU功能介绍及应用基本讲述完毕,由于篇幅原因,很多源码和细节没有在这里详细展开,感兴趣的读者可以在NXP官网下载RT1180 Reference Manual以及通过SDK进行深入了解。

恩智浦致力于打造安全的连接和基础设施解决方案,为智慧生活保驾护航。

恩智浦半导体NXP Semiconductors N.V.(纳斯达克股票代码:NXPI)是汽车、工业物联网、移动设备和通信基础设施市场值得信赖的合作伙伴,致力于提供创新解决方案。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分