xebjz 发表于 2025-5-30 15:09

arduino上,如何用lan9252来实现ethercat的PDO高速总线通讯

本帖最后由 xebjz 于 2025-5-30 15:11 编辑

Download - AB&T先到网站下载软件:
www.bausano.net/en/download-2
Library EasyCAT V 2.1,是arduino的库。
EasyConfigurator_V4_3,是从站的设置软件。
EasyNavigator是从站的测试软件。
先在EasyCAT_Config_GUI里面新建工程,在左边的上面填好自己的信息。
在左下添加好自己需要的输入变量(主站传输给单片机从站的),注意输入总和最大不超过128字节
右下添加输出(单片机传输给主站的)。注意输出总和最大不超过128字节

然后右上部分先创建文件,再把bin写入eeprom.完成后再打开EasyNavigator软件查看从站的目录是否正确。

arduino安装好Library EasyCAT V 2.1库后,
程序参考如下:

#include "EasyCAT.h"
#include <SPI.h>// SPI库

#define cs_lan9252 PA4
#define led PC13
#define IRQ_pin PA11
#define NC0_pin PA12
#define NC1_pin PA15

EasyCAT EASYCAT(cs_lan9252, SM_SYNC);
//或者:EasyCAT EASYCAT(cs_lan9252);

void setup()
{
Serial.begin(9600);
if (EASYCAT.Init() == true)                                     // initialization
{                                                               // succesfully completed
    Serial.print ("initialized");                                 //
}                                                               //

else                                                            // initialization failed   
{                                                               // the EasyCAT board was not recognized
    Serial.print ("initialization failed");                     //   
                                                                  // The most common reason is that the SPI
                                                                  // chip select choosen on the board doesn't
                                                                  // match the one choosen by the firmware
                                                                  
    pinMode(13, OUTPUT);                                          // stay in loop for ever
                                                                  // with the Arduino led blinking
    while(1)                                                      //
    {                                                             //   
      digitalWrite (13, LOW);                                     //
      delay(500);                                                 //   
      digitalWrite (13, HIGH);                                    //
      delay(500);                                                 //
    }                                                             //
}
    PreviousMillis = millis();
}

void loop()                                             
{                                             
EASYCAT.MainTask();
Application();                                       
}

void Application () {//这里做自己的程序,可以和主站通讯
Millis = millis();                                    // As an example for this application
if (Millis - PreviousMillis >= 10)             //10 mS
{                                                       //
    PreviousMillis = Millis;
//EASYCAT.BufferIn.Byte =发送给主站字节;            从站写主站
//本地变量=last_F0_00 = EASYCAT.BufferOut..Byte;   从站读主站。
   }
//再添加其它应用
}

如果想要多任务,可以再添加task scheduler多任务管理器,可以并行运行,类似操作系统效果
页: [1]
查看完整版本: arduino上,如何用lan9252来实现ethercat的PDO高速总线通讯