This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHXL2-570LC43:两个 TMS570LC4357 Launchpad 板之间的以太网传输和接收

Guru**** 2390755 points
Other Parts Discussed in Thread: TMS570LC4357

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1509918/launchxl2-570lc43-ethernet-transmission-and-receiving-between-two-tms570lc4357-launchpad-boards

部件号:LAUNCHXL2-570LC43
Thread 中讨论的其他器件:TMS570LC4357

工具/软件:

我正在处理一个项目、涉及在两个 TMS570LC4357微控制器之间使用 EMAC (以太网介质访问控制器)模块来设置以太网通信。 我的目标是将数据包从一个 TMS570LC4357 (板 A)发送到另一个(板 B)、并在板 B 上接收数据包、从而实现双向通信。

每个电路板都有唯一的 MAC 地址:

  • 电路板 A:00:08:EE:03:A6:6C
  • 电路板 B:00:08:EE:03:A6:6D

我从电路板 A 发送一个64字节的数据包、其中:

  • Destination MAC:板 B 的 MAC (00:08:EE:03:A6:6D)或广播(FF:FF:FF:FF:FF:FF:FF)。
  • 源 MAC:电路板 A 的 MAC。
  • EtherType:0x88B5 (自定义)。
  • 有效载荷:"hello"后跟零。

我通过从论坛导入一个示例工程、在单板上测试了环回模式:

#include "HL_sys_common.h"
#include "HL_system.h"
#include "HL_emac.h"
#include "HL_hw_reg_access.h"

//用于跟踪传输状态的全局标志
Volatile uint8 txSuccessFlag = 0;


UINT8 src_emacAddress(6U]={0x00U、0x08U、0xEEU、0x03U、0xA6U、 0x6CU};// TX MAC
Uint8 dest_emacAddress[6U]={0xFFU、0xFFU、0xFFU、0xFFU、0xFFU、0xFFU、 0xFFU};// RX MAC
extern hdkif_t hdkif_data[1];

pbuf_t pack[1];
uint8 data[1][100];
uint8 a = 0;
uint8 b = 0;

void create_packet()

int j;

Pack[0].tot_len = 64;//确保它>=最小以太网帧大小
Pack[0].len = 64;

//目标 MAC
对于(j = 0;j < 6;j++)
DATA[0][j]= dest_emacAddress[j];

//源 MAC
对于(j = 0;j < 6;j++)
DATA[0][j + 6]= src_emacAddress[j];

// EtherType
DATA[0][12]= 0x88;
DATA[0][13]= 0xB5;

//有效负载"hello"
DATA[0][14]='h';
DATA[0][15]='e';
DATA[0][16]='l';
DATA[0][17]='l';
DATA[0][18]='o';

对于(j = 19;j < 64;j++)
DATA[0][j]= 0x00;

Pack[0].payload =&data[0][0];
Pack[0].next = NULL;
}

// TX 完成时调用通知函数
void emacTxNotification (hdkif_t *hdkif)

//设置标志以指示传输成功
txSuccessFlag = 1;//传输成功完成
}

void main (void)

_enable_irq();
EMACHWInit (src_emacAddress);

create_packet();
while (1){
txSuccessFlag=0;
IF (EMACTransmit (&hdkif_data[0]、&pack[0])!= 0)

//传输已启动、现在等待通知
while (txSuccessFlag =0);//等待通知(TX 成功)
if (txSuccessFlag == 1){
//传输成功
a++;//一些表示成功的逻辑
}其他{
//传输失败
B = 9;//一些指示故障的逻辑
}
}
暴露

B = 9;
}
}
}

通过检查 TXGOODFRAMES 和 RXGOODFRAMES for Broadcast、我们可以看到值在递增  

现在、我将转向板对板通信。

pleases 为我提供了在2块电路板之间传输和接收数据包的建议和步骤  

如有任何指导、代码片段或对类似工程的引用、我们将不胜感激! 我特别想了解让 TX/RX 正常工作并调试任何问题的实用步骤。 提前感谢您的帮助!

此致、
Tanuj Soni