fix(eth): 修复EthNet模块参数配置和调试命令问题

This commit is contained in:
2026-06-17 17:46:33 +08:00
parent 2a7c8e4b3b
commit 1f255cb3ef
4 changed files with 14 additions and 27 deletions
+11 -23
View File
@@ -623,6 +623,11 @@ void EthLoopHandler(void)
break;
case ETH_WAIT_LINK:
if(CatOne.EthLinkWaitCnt == 0) {
/* 首次进入等待链路状态,等待模块完全启动 */
CAT1_DBG_LOG("ETH Waiting for module ready...\r\n");
rt_thread_delay(2000);
}
if(ETH_LINK_GET() == Reset) {
CAT1_DBG_LOG("ETH Link OK!\r\n");
if(CatOne.GateWay->SvrRegFlag == false) {
@@ -890,11 +895,6 @@ void ETHTriggerRegister(void)
CatOne.EthStatus = ETH_REG_SVR;
}
void ETHResetEx(void)
{
CatOne.EthStatus = ETH_RESET;
}
void ETHApplyNetPara(void)
{
uint8_t cmdBuf[128];
@@ -939,7 +939,7 @@ void ETHApplyNetPara(void)
cmdBuf[idx++] = 0xED; cmdBuf[idx++] = 0xF2; cmdBuf[idx++] = 0xA3; cmdBuf[idx++] = 0x56;
cmdBuf[idx++] = 0xCA; cmdBuf[idx++] = 0xDB; cmdBuf[idx++] = 0x91; cmdBuf[idx++] = 0x84;
cmdBuf[idx++] = 0xB0; cmdBuf[idx++] = 0xD7;
cmdBuf[idx++] = 0x03; /* 命令类型: 写参数并保存到Flash */
cmdBuf[idx++] = 0x01; /* 命令类型: 写参数,部分参数修改后会自动重启 */
cmdBuf[idx++] = 0x00; /* 偏移: 0x00 */
cmdBuf[idx++] = 0x15; /* 长度: 21字节 */
@@ -989,29 +989,17 @@ void ETHApplyNetPara(void)
cmdBuf[idx++] = 0xED; cmdBuf[idx++] = 0xF2; cmdBuf[idx++] = 0xA3; cmdBuf[idx++] = 0x56;
cmdBuf[idx++] = 0xCA; cmdBuf[idx++] = 0xDB; cmdBuf[idx++] = 0x91; cmdBuf[idx++] = 0x84;
cmdBuf[idx++] = 0xB0; cmdBuf[idx++] = 0xD7;
cmdBuf[idx++] = 0x03; /* 命令类型: 写参数并保存到Flash */
cmdBuf[idx++] = 0x01; /* 命令类型: 写参数,DHCP修改后会自动重启 */
cmdBuf[idx++] = 0x38; /* 偏移: 0x38 (DHCP en) */
cmdBuf[idx++] = 0x01; /* 长度: 1字节 */
cmdBuf[idx++] = (pCfg->EthNet.IpMode == ETH_IP_DHCP) ? 0x01 : 0x00;
CAT1_DBG_LOG("ETH Write DHCP=%d", cmdBuf[idx - 1]);
EthOrCat1UartSend(cmdBuf, idx);
rt_thread_delay(500);
rt_thread_delay(3000); /* 等待模块重启 */
/* 步骤3: 使用07命令重启模块使参数生效
* 07命令: 写参数+保存+重启。写入偏移0x1F(DevID),1字节0x00
* DevID不可修改,实际效果只是重启模块
/* 注意:不要向DevID(偏移0x1F)区域写入任意数据,否则根据手册说明,
* 如果写入的ID不正确,设备会丢弃所有其他写入的参数
* 模块会在下次上电时自动使用Flash中保存的参数工作
*/
idx = 0;
cmdBuf[idx++] = 0xED; cmdBuf[idx++] = 0xF2; cmdBuf[idx++] = 0xA3; cmdBuf[idx++] = 0x56;
cmdBuf[idx++] = 0xCA; cmdBuf[idx++] = 0xDB; cmdBuf[idx++] = 0x91; cmdBuf[idx++] = 0x84;
cmdBuf[idx++] = 0xB0; cmdBuf[idx++] = 0xD7;
cmdBuf[idx++] = 0x07; /* 命令类型: 写参数+保存+重启 */
cmdBuf[idx++] = 0x1F; /* 偏移: 0x1F (DevID区域,不可修改) */
cmdBuf[idx++] = 0x01; /* 长度: 1字节 */
cmdBuf[idx++] = 0x00; /* 写入无效数据,仅触发重启 */
CAT1_DBG_LOG("ETH Restart module");
EthOrCat1UartSend(cmdBuf, idx);
rt_thread_delay(2000);
}
+2 -2
View File
@@ -565,7 +565,7 @@ void RS485RxOverhandler(void)
if(SComm1Para.RS485TimeOutCnt > 0)
SComm1Para.RS485TimeOutCnt--;
if(SComm1Para.RS485RxLen > 5 && SComm1Para.RS485TimeOutCnt == 0) {
if(SComm1Para.RS485RxLen >= 1 && SComm1Para.RS485TimeOutCnt == 0) {
if(SComm1Para.InitOverFlag == true) {
rt_sem_release(SComm1Para.RS485Rev_Sem);
SComm1Para.RS485TimeOutCnt = 20;
@@ -579,7 +579,7 @@ void RS485RxOverhandler(void)
if(SComm2Para.RS485TimeOutCnt > 0)
SComm2Para.RS485TimeOutCnt--;
if(SComm2Para.RS485RxLen > 5 && SComm2Para.RS485TimeOutCnt == 0) {
if(SComm2Para.RS485RxLen >= 1 && SComm2Para.RS485TimeOutCnt == 0) {
if(SComm2Para.InitOverFlag == true) {
SComm2Para.RS485TimeOutCnt = 20;
rt_sem_release(SComm2Para.RS485Rev_Sem);