我正在尝试对 TMS570LS31x 的安全功能 ETH2A 执行 I/O 回送测试。 
要检查的环境是 。 
传输正常完成、但接收未完成。
我的源代码如下所示。 
如果出现错误、请告诉我。 
代码中调用的函数是由 HALCoGen04.05.01生成的函数。 
我会问您、以防万一。 
是否使用 MACCONTROL 寄存器内部环回? 
***** 代码
void TestEthLpbk (void){ 
hdkif_t *hdkif; 
hdkif =&hdkif_data[0U]; 
布尔 retValue; 
uint8 TX_DATA[60U]={/*测试传输数据* 
0x00、0x80、0x2F、0x25、0x56、 0xBA、0x98、0x90、0x96、0xD8}; 
uint8 rx_data[60U]={0U};//接收缓冲区 
uint16 dataLen = 60U; 
pbuf_t pbuf ={NULL、TX_DATA、dataLen、dataLen}; 
uint16 rcvLen = 0U; 
uint16 cnt; 
/*初始化用于发送和接收的 EMAC */ 
EMACHWInit( selectmacAdd ); 
EMACRMIISpeedSet (EMAC_BASE、EMAC_RMIISPEED_100Mbps); 
/*启用环回*/ 
Dp83640EnableLoopback (hdkif->mdio_BASE、hdkif->phy_addr); 
EMACEnableLoopback ( hdkif->EMAC_BASE ); 
/*数据传输*/ 
retValue = EMACTransmit( hdkif,&pbuf ); 
if (retValue == true){ 
/*接收数据*/ 
EMACReceive( hdkif ); 
rcvLen = hdkif->rxchptr.active_head->bufoff_len; 
for (cnt = 0U;cnt < rcvLen;cnt++){ 
RX_DATA[cnT]= HWREGB ((hdkif->rxchptr.active_head->bufptr)+cnt); 
} 
/*数据验证*/ 
for (cnt = 0U;cnt < rcvLen;cnt++){ 
if (tx_data[cnt]!= rx_data[cnt]){ 
/*环回故障*/ 
} 
} 
} 
否则{ 
/*发送数据失败*/ 
} 
/*禁用环回*/ 
EMACDisableLoopback ( hdkif->EMAC_BASE ); 
dp83640DisableLoopback (hdkif->mdio_BASE、hdkif->phy_addr); 
返回; 
}