logo资料库

STM32与LAN9252的连接.docx

第1页 / 共43页
第2页 / 共43页
第3页 / 共43页
第4页 / 共43页
第5页 / 共43页
第6页 / 共43页
第7页 / 共43页
第8页 / 共43页
资料共43页,剩余部分请下载后查看
LAN9252工作模式
整体开发流程
移植要处理的问题
代码层面的工作
开发中使用的工具
STM32与LAN9252构建EtherCAT从站(二):SSC的使用
SSC简介和下载
SSC构建协议栈文件和XML
STM32与LAN9252构建EtherCAT从站(三):LAN9252的XML文件
EtherCAT从站XML文件简介
XML中的设备基础信息
XML中的字典和IO数据
XML中的EEPROM内容
STM32与LAN9252构建EtherCAT从站(四):STM32配置SPI
使用STM32CubeMX软件配置MCU外设
与LAN9252通信,涉及到的外设包括以下几点:
NVIC方面,使用CubeMX配置时注意以下几点:
CubeMX配置时的一些重要截图如下:
时钟:
SPI:
外部中断:
NVIC:
KEIL5 工程模板:
模块化代码:
Keil5中适配SPI
LAN9252 芯片的SSC模板
移植,移植,移植
function “INTDisableInterrupts” declared implicitl
argument of type “__packed unsigned short “ is inc
..\EtherCAT\ecatappl.c(143): warning: #1215-D: #wa
其他错误和警告
SPI适配
SPIDriver.h
SPIDriver.c
总结
STM32与LAN9252构建EtherCAT从站(五):STM32与LAN9252适配
1.硬件
2.软件
2.1对接接口
2.2 中断接口
2.2.1 PDI_Isr()
2.2.2 Sync0_Isr() 和 Sync1_Isr()
2.2.3 ECAT_CheckTimer()
2.3 主程序接口
2.3.1 HW_Init()
2.3.2 HW_Init()
2.3.2 MainLoop()
2.4 业务逻辑接口
2.4.1 APPL_GenerateMapping()
2.4.2 APPL_InputMapping(UINT16 *pData)
2.4.3 APPL_OutputMapping(UINT16 *pData)
3.总结
STM32与LAN9252构建EtherCAT从站(六):TwinCAT2的使用和从站测试
1. TwinCAT连接PLC
1.1 TwinCAT简介
1.2 TwinCAT2连接CX9020
2 从站设备发现
2.1 Run Mode 和 Config Mode
2.2 发现从站
2.3 烧录EEPROM
3. 点位观察和强制
4. PLC测试
4.1 APPL_Application()中的输入逻辑
4.2 PLC
总结
STM32 与 LAN9252 的连接 EtherCAT 及项目简述 EtherCAT 是一种基于以太网的工业通信协议,类似于 Profinet。 EterhCAT 协议是一主多从模式,主站一般是由一个装有 TwinCAT 的 PC 机担任,PC 机对网卡特殊要求, 需要支持 EtherCAT 的网卡。本项目的主站是一台倍福 CX9020(仅支持 TwinCAT2.0),这是一台 ARM 架构的 PC,内装 Windows CE 操作系统,操作系统中装了 TwinCAT2. 项目需要开发其从站,周期交互 IO:64 入 64 出,选用 STM32F103+LAN9252 构建。 LAN9252 工作模式 根据 LAN9252 的 Datasheet 所述,LAN9252 一共有四种工作模式: SPI 串口通信模式,4 线串行数据(或更多 SQI)  自我工作模式(数字 I/O 模式),8 入 8 出   并行通信模式(HBI),16/8 位数据交互  扩展模式,LAN9252 与 MCU 之间 SPI 通信,同时对外再提供一组 MII 接口,可扩展连接另一组 PHY 芯 片,多接一个 RJ45 端子。 根据需求,项目选择 SPI 串口模式。 整体开发流程 1. 淘宝购买相关学习板,得到文档和协议栈。 2. 根据项目需求构建 XML,该 XML 将会由 TwinCAT2 解析,并将相关特诊烧录进 LAN9252 连接的 EEPROM 中。 3. 根据学习板附带的文档,尽可能理解 EtherCAT 协议栈和通信步骤。 4. 根据项目需求绘制自选 MCU 与 LAN9252 的原理图和 PCB。 5. 移植相关代码到自己的 MCU 中,TwinCAT 中编写 PLC 测试和调试。 整个体系中,LAN9252 起到以下作用: - PHY 的作用,所有跟以太网 RJ45 交互的工作,都由 LAN9252 完成。 - 网络交换作用,EtherCAT 要求从站必须有一拖一的能力,不可以终结总线,LAN9252 有 2 端 口/3 端口模式,内部做网络交换。 - 数据解析及 SPI 下位机作用。MCU 可以作为 SPI 主模式与 LAN9252 进行数据交互,其交互流程在协议栈中,非常复杂,没能完全理解。 移植要处理的问题 1. 首选需要初步理解 TwinCAT 使用的 XML 的作用,此 XML 是对设备的描述,类似于 GSD 文件。描述了通 信时需要使用的对象字典,数据类型,长度等等。xml 文件一般都有好几兆大小,但 TwinCAT 只会解析
XML 并将其中一部分特征数据烧录进 LAN9252 挂载的 EEPROM 中去,所以并不需要担心 EEPROM 大小 问题,一般选择 512KB 的快速 EEPROM(24FC512)。 2. 根据自己的项目要求,设计 XML,这个工作可以通过 EtherCAT 的开发工具 SSC 来简单实现,如果不使用 3. SSC,手工修改 XML 将是一件非常麻烦的事情。 SSC 在生成 XML 的同时,还可以生成代码,这份代码是没法直接用的,但里面有关字典的.c 文件非常有 价值,可以参考并移植到开发板的代码中去,完成自己的逻辑。 代码层面的工作 整个 EtherCAT 协议栈相当复杂,几乎没办法阅读,只能从 main()函数入手,简单地剥解一下代码,可以 看到整个项目是由三个大函数构建而成的: HW_Init(); MainInit(); while (1){ MainLoop(); } 以上就是整个 EtherCAT 协议跑起来的骨架。 此外,在 MCU 的 GPIO 和内部资源部分,需要做到以下几 点: SPI 四根线的使能,跟 LAN9252 的通信就靠它了。 1. 2. 一个定时器中断,1ms 周期,调用 ECAT_CheckTimer();函数,但不要一上来就初始化使能这个中断,根 据接口定义好使能入口,让协议栈调用,以上电就开启这个定时器中断会导致连接失败。 3. 三个外部中断,IRQ,SCY0,SCY1,其中 IRQ 必须实现,SCY0 和 SCY1 是分布式时钟同步用的,可以选择使 用,也可不使用,注意这三个中断的使能同样要根据代码中的接口定义入口,由协议栈使能和失能中断, 万万不可一上电就来使能中断。中断中处理的代码如下: void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == LAN9252_IRQ_Pin) { PDI_Isr(); return; } if (GPIO_Pin == LAN9252_SYC0_Pin) { DISABLE_ESC_INT(); Sync0_Isr(); ENABLE_ESC_INT(); return; } if (GPIO_Pin == LAN9252_SYC1_Pin) { DISABLE_ESC_INT(); Sync1_Isr(); ENABLE_ESC_INT();
return; } } 开发中使用的工具     STM32CubeMX5.1, Keil5(TrustStudio), Sublime3 SSC, XMLSpy TwinCAT2.0, VirtualBox AltiumDesigner18 STM32 与 LAN9252 构建 EtherCAT 从站(二):SSC 的使用 SSC 简介和下载 SSC(Slave Stack Code Tool)从站协议栈代码工具,是 EtherCAT 协会为会员免费提供的,EtherCAT 会 员可以免费申请,可以致电其北京办事处寻求中文帮助,对方可以指导您与德国总部进行会员申请: https://www.ethercat.org.cn/cn/contact.html。 使用 SSC,可以快速地构建 EtherCAT 从站代码,保证从站协议栈与最新的 EtherCAT 协议相匹配,同时 还可以生成从站设备描述文件,这是一份 XML 文件,需要放在 TwinCAT 安装路径下的/Io/EtherCAT 目 录下,在使用 TwinCAT 对设备进行组态时需要使用。是 EtherCAT 从站设计过程中很重要的一个文件,关 于从站设备传输多少数据,是否启用分布式时钟,PHY(LAN9252)与 MCU 之间如何通信等等重要数据 都在这个描述文件中定义。这份 XML 如果全靠手工编辑,工作量非常大,并且极易出错,有了 SSC 后, 构建 XML 将非常简单。 在官网下载 SSC 时,需要用户提供 VendorID,这是由 EtherCAT 协会为其会员企业提供的全球唯一标志, 企业可以用其作为所生产设备的标志。 SSC 构建协议栈文件和 XML 我们的项目简单使用 64 入 64 出纯数字 IO,制作一个由键盘和 LED 灯组成的 EtherCAT 从站面板,来跟 BECKHOFF 的 PLC 进行通信。LAN9252 与 MCU 之间的通信方式我们选择使用 SPI 方式。 打开 SSC 后,File->New,打开新建项目的对话框,这里让我们选择一个项目模板,可以使用默认选项创 建,该选项提示我们 All settings are available.,这里我们不选择默认模板,而是在点中 Custom 单选后,下拉出一个 EL9800 | 8Bit Digital I/O, 16Bit Analog Input,选中它以后,下方提示我 们:
This configuration provides the standard configuration for the new EL9800 EtherCAT Evaluation Kit. The corresponding device description is located in file "..\esi\SlaveStackCode.xml" (device: EL9800-SPI-PIC24) or will be created by this tool. 显然这个模板更加适合我们,点击 OK 进入下一步。 此时界面由左边的树状菜单和右边的内容条目组成,有许多可以配置的选项,包括 VendorID 和 Image 等 LOGO 的设置。如果有兴趣可以对其进行设置,也可以直接进入下一步。 依次点击 Tool->Application->Create New,提示需要先保存一下,随便找个路径保存一下本项目。保 存成功后,会立刻弹出一个 Excel 文件(需要预先安装 Excel)。
这是一份模板 Excel,用来设置 EtherCAT 的通信数据,我们将使用此 Excel 进行传输 IO 的点位设置。根 据之前的计划,输入有 64 个 BIT,输出有 64 个 BIT,因此对该 Excel 的//0x6nnx 和//0x7nnx 条目进行 配置,配置方法如下: 按照上述三张图片的配置,熟练使用 Excel 的批量拖拽方法,可以快速地填入。不要忘了修改最后一个 Maximum number of modules 条目,改成 3 即可。 都修改好以后,保存 Excel,SSC 会自动打开导入该 Excel 的对话框,点击 OK 进行导入。
导入完成后界面并不会有太大变化,此时需要点击 Project->Create new Slave Files 进行协议栈文件的创 建。
创建完成后整个工程项目如图所示: 至此,使用 SSC 的工作就都完成了。下面的工作是对其生成的 XML 文件进行微调,并对协议栈文件进行 移植。 本章所介绍的知识点大部分来自于 SSC 内置的一份帮助文档 EtherCAT Slave Design Quick Guide.pdf, 可以点击下载。我已经代表我们企业申请加入了 EtherCAT 协会,并注册了 VendorID,在 EtherCAT 协 会入会章程中不允许会员在互联网上扩散只有会员才可以下载到的资源,因此 SSC 的安装包我不方便上传, 有需要的小伙伴可以私下交流,发邮件至 newflydd#gmail.com。 STM32 与 LAN9252 构建 EtherCAT 从站(三):LAN9252 的 XML 文件 EtherCAT 从站 XML 文件简介 每一个 EtherCAT 从站设备都需要有一个硬件描述的 XML 文件,用来给 TwinCAT 组态,XML 文件中描述 定义了通信时需要用到的各种数据。包括设备所属公司名,设备名,设备版本,LOGO 等基础信息,亦包 括通信时的点位,点位名称,大小,数量等信息,还包括一个非常特别的 14ByteConfigData,这 14 个 字节用来给 PHY 识别,像 ET1100,LAN9252 等芯片通过其来识别自身的工作方式,比如第一章 STM32 与 LAN9252 构建 EtherCAT 从站(一):项目简介中我们提到的 LAN9252 工作的四种方式就是通过这 组数据进行确定的。
TwinCAT 对设备进行组态时,首先通过其硬件网卡搜索网络上所有的 EtherCAT 设备,发现设备后可以将 XML 文件烧录至 LAN9252 连接的 EEPROM 中,此后设备上电时,PHY 就能根据 EEPROM 中的数据对 自身进行相应的配置。关于 TwinCAT 的使用,我们在第六章 STM32 与 LAN9252 构建 EtherCAT 从站(六): TwinCAT2 的使用和从站测试详细介绍。 XML 文件比较大,用普通的文本编辑器打开会显得有些凌乱,上下文结构也不能很好的体现。因此需要一 些专门处理 XML 的工具来辅助编辑,推荐的有 XMLSPY 和 XML Notepad,前者是收费的,破解版也很 难找,后者是微软 2007 年出的,免费试用,但是年代有些久远,功能也不及前者多。 XML 中的设备基础信息 如图使用 XMLNotepad 打开上一章 STM32 与 LAN9252 构建 EtherCAT 从站(二):使用 SSC 生成 EtherCAT 协议栈和 XML 文件生成的 XML 文件,可以粗略地观察到整个文档由两个节点组成,Vendor 和 Descriptions。 Vendor 下面的 id 和 name 来自于 EtherCAT 会员企业信息,我这里不方便用我们公司的真实信息,暂且 用#x1 和 EtherCAT 来替代。
分享到:
收藏