从去年年末接触EtherCAT总线以来,由于其他一些工作原因,前期设计的基于STM32F303+LAN9252开发板一直未能跑通,仅实现了LAN9252这部分威廉希尔官方网站
与Twincat的通讯,MCU与LAN9252未能成功通信交互数据。近段时间又返回重新开始了这部分内容,终于是将下位机调试成功。之前在选择MCU时考虑很多,最后在网上找到了这样一份答案,选取EtherCAT主控单片机时应选择FLASH在25KB、RAM在32KB以上的MCU,考虑成本及一些功能要求在这里我用的是FLASH为128KB,RAM为40KB的STM32F303CBT6这片单片机。整体思路是采用STM32CubeMX生成基础工程,连接适配好EtherCAT协议包的相关API,编写相关的XML文件,在学习时看了丁丁大佬开发EtherCAT的相关文章,受益匪浅。
关于我的设计
由于本次前已完成硬件上的调试,故本次只对下位机软件进行一个记录和说明。
一、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波的占空比进而达到不同电压信号的输出。
从去年年末接触EtherCAT总线以来,由于其他一些工作原因,前期设计的基于STM32F303+LAN9252开发板一直未能跑通,仅实现了LAN9252这部分威廉希尔官方网站
与Twincat的通讯,MCU与LAN9252未能成功通信交互数据。近段时间又返回重新开始了这部分内容,终于是将下位机调试成功。之前在选择MCU时考虑很多,最后在网上找到了这样一份答案,选取EtherCAT主控单片机时应选择FLASH在25KB、RAM在32KB以上的MCU,考虑成本及一些功能要求在这里我用的是FLASH为128KB,RAM为40KB的STM32F303CBT6这片单片机。整体思路是采用STM32CubeMX生成基础工程,连接适配好EtherCAT协议包的相关API,编写相关的XML文件,在学习时看了丁丁大佬开发EtherCAT的相关文章,受益匪浅。
关于我的设计
由于本次前已完成硬件上的调试,故本次只对下位机软件进行一个记录和说明。
一、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波的占空比进而达到不同电压信号的输出。
举报