fix(esc_lan9252): 修复LAN9252 HBI访问模型和IRQ输出使能问题
- 修正HBI访问模型:将ESC核心CSR(0x0000-0x0FFF)改为通过ECAT_CSR_CMD/DATA 间接端口访问,解决此前直接寻址导致核心寄存器恒读0/写丢弃的问题 - 新增csrRead/csrWrite/pramRead/pramWrite接口,正确实现LAN9252访问端口操作 - 添加PDI就绪检测:等待DL_STATUS bit0置位确认EEPROM加载完成和EtherCAT核心使能 - 实现IRQ引脚输出使能:配置IRQ_CFG和INT_EN寄存器,使EtherCAT事件能到达PB1, 解决PDI_Isr未触发导致SAFEOP->OP无限挂起的问题 - 为ESC_EXMC硬件诊断添加CONFIG_ESC_EXMC_DIAG门控,默认关闭避免影响正常运行 - 修正system_gd32e50x.c中HXTAL故障诊断的寄存器偏移和位设置错
This commit is contained in:
@@ -118,12 +118,25 @@ public:
|
||||
|
||||
static void init();
|
||||
|
||||
/** L0 自检故障原因码(selfTestL0 输出;经 0xA3 fault_codes[] 上报,高 3 位带通道号见 initial.h) */
|
||||
enum SelfTestFault : uint8_t {
|
||||
kSelfTestOk = 0U, /**< 通过 */
|
||||
kSelfTestHwInit = 1U, /**< 控制器初始化失败(重试 5 次后仍不成功) */
|
||||
kSelfTestStuckInit = 2U, /**< 卡在初始化模式(IWS 未清零) */
|
||||
kSelfTestStbLevel = 3U, /**< 收发器 STB 输出未拉低(配置未生效) */
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief L0 轻量自检(不向物理总线发帧)。
|
||||
* @brief L0 轻量自检(不向物理总线发帧),仅校验 GD32 侧控制器自身状态。
|
||||
* @param[out] fault_code 首个失败通道的 SelfTestFault 原因码;全部通过时为 kSelfTestOk。允许空。
|
||||
* @param[out] fault_channel 首个失败通道号 0/1/2;全部通过时无意义。允许空。
|
||||
* @retval true 所有已使能通道通过;false 无使能通道或任一路失败。
|
||||
* @note 检查:硬件 init 结果、退出 init mode、收发器 Normal、无 BUS_OFF、TEC/REC 阈值。
|
||||
* @note 检查:硬件 init 结果、退出 init mode、收发器 STB 已置 Normal。
|
||||
* 1.5.35 移除 BUS_OFF 与 TEC/REC 检查:它们是总线侧状态,
|
||||
* 通道未接从站(RX 浮空噪声)时会误报——「没接设备」不等于错误;
|
||||
* 总线健康经 0xC1 反馈帧(bus_state/TEC/REC)运行期上报,网页 CAN 页可见。
|
||||
*/
|
||||
static bool selfTestL0();
|
||||
static bool selfTestL0(uint8_t *fault_code = nullptr, uint8_t *fault_channel = nullptr);
|
||||
|
||||
/**
|
||||
* @brief 查询指定通道是否已使能。
|
||||
|
||||
Reference in New Issue
Block a user