前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EtherCAT开发_3_SSC生成协议栈移植到STM32F405

EtherCAT开发_3_SSC生成协议栈移植到STM32F405

作者头像
用户5908113
发布2024-05-06 14:41:08
770
发布2024-05-06 14:41:08
举报
文章被收录于专栏:Pou光明Pou光明

一、协议栈的生成

协议栈的生成可参考《https://blog.csdn.net/g360250466/article/details/129847081》

几个重点的字段:

1、Hardware中

EL9800_HW, 设置为1,在该基础上进行修改

CONTROLLER_16BIT,设置为0

CONTROLLER_32BIT,设置为1

_IPC24, 设置为0

2、Application

EL9800_APPLICATION,设置为0

APPLICATION_FILE, 我整的是#include "MyApplication.h"

3、简版Excel生成

一个uint16类型的输入,一个输出。

4、简版协议栈生成

el9800hw文件名未做修改,其他硬件的修改都在该文件,像spi,定时器等。

生成的所有文件,MyApplication需要给到EtherCAT主站。使用TWinCAT3作为主站,放置于E:\twincat3\3.1\Config\Io\EtherCAT,注意自己的安装目录。

二、协议栈的移植

spi、定时器等的配置不做说明。

代码组织结构:

main()函数MyApplication.c中,

HW_Init(),硬件平台初始化,spi,定时器,GPIO等初始化在这。

1、APPL_OutputMapping和APPL_InputMapping

APPL_OutputMapping可以获取主站的写入的数据,本移植程序将主站的输出给到输入。

代码语言:javascript
复制
void APPL_OutputMapping(UINT16* pData)
{      
      DO0x7000.Do1 = *pData;
}
代码语言:javascript
复制
void APPL_InputMapping(UINT16* pData)
{
       *pData = DO0x7000.Do1;
}

DO0x7000的定义在MyApplicationObjects中。

PROTO TOBJ7000 DO0x7000

代码语言:javascript
复制
typedef struct OBJ_STRUCT_PACKED_START {

UINT16 u16SubIndex0;

UINT16 Do1; /* Subindex1 - do1 */

} OBJ_STRUCT_PACKED_END

TOBJ7000;

2、APPL_Application

未添加任何代码。

三、编译过后的调试

当移植编译过后,主站并不能变成OP状态。

1、OBJ_DWORD_ALIGN和OBJ_WORD_ALIGN

改成这样:

2、ConfigData

05020300000000000000

这个开始没修改的时候,Online始终无法变成OP状态,一直是Init状态。后面开始谷歌,找到了ConfigData字段,改成板子自带的,就OK了。后面改成不行的,也不行了。

主要就这两点。

3、效果展示

其他进一步的测试需后续完成。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-05-03,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 Pou光明 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com