STM32F303+LAN9252的EtherCAT实现IO、AD、DA

从去年年末接触EtherCAT总线以来,由于其他一些工作原因,前期设计的基于STM32F303+LAN9252开发板一直未能跑通,仅实现了LAN9252这部分电路与Twincat的通讯,MCU与LAN9252未能成功通信交互数据。近段时间又返回重新开始了这部分内容,终于是将下位机调试成功。之前在选择MCU时考虑很多,最后在网上找到了这样一份答案,选取EtherCAT主控单片机时应选择FLASH在25KB、RAM在32KB以上的MCU,考虑成本及一些功能要求在这里我用的是FLASH为128KB,RAM为40KB的STM32F303CBT6这片单片机。整体思路是采用STM32CubeMX生成基础工程,连接适配好EtherCAT协议包的相关API,编写相关的XML文件,在学习时看了丁丁大佬开发EtherCAT的相关文章,受益匪浅,大佬直通车https://www.hexcode.cn/article/5e3ee9a835616641b2daef97

关于我的设计

由于本次前已完成硬件上的调试,故本次只对下位机软件进行一个记录和说明。

一、STM32CubeMX配置外设等基础工程

首先,STM32与LAN9252的通信主要涉及到以下内容:

1、SPI: 与LAN9252通讯,读写LAN9252的接口,受单片机功能限制,在这里我只能选择4线标准SPI通信

2、3个外部中断:IRQ总中断、SYNC0、SYNC1两个时钟同步中断,EtherCAT主从通信中如果选择使用分布式时钟功能,这两个中断要配上。(el9800hw.c、el9800hw.h)

3、1ms定时器:用于超时差错,调用ECAT_CheckTimer()函数,配置好后让协议栈自己调用。

配置好这些基本的外设,剩下的就是和协议栈相结合一个萝卜一个坑进行移植,移植过程中千万细心不要出现低级错误。

二、配置MCU外设的一些主要截图

1、引脚

2、时钟

3、SPI

4、外部中断

三、KEIL主要外设代码

为方便快速开发,本次设计直接移植了开发板的EtherCAT包,STM32从站部分已经实现IO、DA、AD等功能,只需对相关变量和SDO进行操作,即可实现特定的功能和应用。

从站修改步骤大体是:

1.自定义对象字典,参考《从站添加对象字典操作流程-R1.2》;

2.在STM32从站程序中,添加外设驱动,初始化过程写在HW_Init()函数中。

四、测试

单片机程序、EEPROM和twincat软件目录下的XML文件,三者必须对应,否则会出错。

1、按键测试

2、LED测试

3、AD测试

4、DA测试

同AD测试一样,我们通过单片机产生PWM波输入到外围电路,通过外围运放电路的转换形成一个0~2.5V的电压信号输出,改变PWM波的占空比进而达到不同电压信号的输出,如下图展示了AI信号的连续变化。

本次记录就到这里啦!

博观而约取,厚积而薄发!

  • 16
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值