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]