工具/软件:TI-RTOS
您好!
在我的项目中、我希望通过 TI-RTOS 中的 i2协议从器件的 EEPROM 读取 MAC 地址。为此、我创建了一个新任务、从 EEPROM 寄存器读取 MAC 并写入相关的 lUser0和 lUser1、如下所示:
void macInitFxn() 
{ 
  I2C_Handle i2c6Handle; 
  I2C_Params i2c6Params; 
  uint8_t txBuffer[1]; 
  /* 48位 MAC 地址*/ 
  uint8_t getMacBuffer[6]; 
  I2C_Transaction i2cTransaction; 
  I2C_Params_init (&i2c6Params); 
  i2c6Handle = I2C_open (DK_TM4C129X_I2C6、&i2c6Params); 
  if (i2c6Handle == NULL) 
  { 
     log ("I2C 无法正确打开 MAC 地址!\n"\}); 
     返回; 
  } 
/*获取 MAC 地址信息*/ 
/*从0xFA 到0xFF 的 MAC 地址起始寄存器*/ 
TxBuffer[0]= 0xFA; 
/* EEPROM 的从器件地址*/ 
i2cTransaction.slaveAddress = 0x50; 
i2cTransaction.writeBuf = txBuffer; 
i2cTransaction.writeCount = 1; 
i2cTransaction.readBuf = getMacBuffer; 
i2cTransaction.ReadCount = 6; 
IF (I2C_transfer (i2c6Handle、&i2cTransaction)) 
{ 
uint32_t HMAC =((getMacBuffer[0]<<16)|(getMacBuffer[1]<<8)|(getMacBuffer[2])); 
uint32_t LMAC =((getMacBuffer[3]<<16)|(getMacBuffer[4]<<8)|(getMacBuffer[5])); 
if (FlashUserSet (HMAC、LMAC)!=成功) 
{ 
LOGERR ("MAC 地址无法成功编程"); 
I2C_Close (i2c6Handle); 
返回; 
} 
if (FlashUserSave()!=成功) 
{ 
LOGERR("无法提交更改 MAC 地址"); 
I2C_Close (i2c6Handle); 
返回; 
} 
日志("MAC 地址已成功更改"); 
I2C_Close (i2c6Handle); 
返回; 
} 
LOGERR ("I2C 总线故障\n"); 
I2C_Close (i2c6Handle); 
返回; 
} 
我看到 LM Flah 编程器的 MAC 地址已成功更改为从 EEPROM 读取的值、即使在 cmd 中使用"arp -a "命令时该值不能被更改。 我看到 FF-FF-FF-FF-FF-FF-FF。在我的代码中更改 MAC 是否存在任何问题? 我是否只读取 LM Flah Porgrammer 的寄存器值? 感谢您的回答。
此致、
Cengizhan YAPICIOĞLU ć
 
				 
		 
					