fix(eth): 修复EthNet模块参数配置和调试命令问题
This commit is contained in:
@@ -133,7 +133,6 @@ bool CatOneGetStatus(void);
|
||||
bool CatOneEthSendQueue(uint8_t *sData, uint16_t sLen);
|
||||
void CatOneTriggerRegister(void);
|
||||
void ETHTriggerRegister(void);
|
||||
void ETHResetEx(void);
|
||||
void ETHApplyNetPara(void);
|
||||
void CatOne_Eth_Thread_Entry(void *parameter);
|
||||
void EthRxOverhandler(void);
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#include "rtthread.h"
|
||||
#include "ff.h"
|
||||
|
||||
#define SOFTWARE_VERSION 12
|
||||
#define SOFTWARE_VERSION 10
|
||||
#define HARDWARE_VERSION 12
|
||||
|
||||
//#define USE_BOOTLOADER
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user