Files
DCU_APP/GD32E508_DCU_APP/comm/esc_lan9252.h
T
cbb 1612e326ee feat(cproject): 重构项目文件结构并添加EtherCAT通信支持
- 将设备相关文件重新组织为device/spi和comm分组
- 添加EtherCAT从站通信模块(esc_exmc_bus、esc_lan9252、ethercat_slave等)
- 添加EXMC外设组件支持
- 统一文件命名规范为小写

refactor(canfd): 优化CANFD模块中断安全性和配置方式

- 替换自定义临界区函数为RT_CRITICAL_SAVE/RESTORE宏
- 使用配置常量CONFIG_IRQ_PREEMPT_CAN替代硬编码值
- 简化邮箱满时的处理逻辑,移除不必要的SysTick等待
- 移除废弃的中断保存头文件引用

refactor(timer): 更新定时器配置以使用配置常量

- 修复头文件包含路径大小写问题
- 使用CONFIG_NVIC_PRIORITY_GROUP配置项替代硬编码值
2026-06-26 00:57:59 +08:00

59 lines
1.7 KiB
C++

/**
* @file esc_lan9252.h
* @brief LAN9252 EtherCAT 从站控制器(ESC)驱动接口。
* @note 通过 EscExmcBus 16-bit 并行总线访问 LAN9252 寄存器与 PDI 内存。
*/
#ifndef COMM_ESC_LAN9252_H
#define COMM_ESC_LAN9252_H
#include <cstdint>
#include <cstddef>
/**
* @brief LAN9252 ESC 驱动。
* @note 封装 ESC 寄存器读写与 PDI(Process Data Interface)内存块访问。
*/
class EscLan9252 {
public:
/** @brief 初始化 EXMC 总线与 ESC 基本寄存器。 */
static void init();
/**
* @brief ESC 自检:读取芯片 ID 寄存器校验。
* @return bool true 表示 ID 匹配(0x87654321),false 表示失败。
*/
static bool selfTest();
/**
* @brief 读取 ESC 寄存器(16-bit)。
* @param[in] addr 寄存器地址(ESC 寄存器空间偏移)。
* @return uint16_t 寄存器值。
*/
static uint16_t readReg(uint16_t addr);
/**
* @brief 写入 ESC 寄存器(16-bit)。
* @param[in] addr 寄存器地址。
* @param[in] val 待写入值。
*/
static void writeReg(uint16_t addr, uint16_t val);
/**
* @brief 从 PDI 内存读取一块数据。
* @param[in] offset PDI 偏移(字节)。
* @param[out] buf 输出缓冲。
* @param[in] len 读取字节数。
*/
static void readPdi(uint16_t offset, uint8_t *buf, size_t len);
/**
* @brief 向 PDI 内存写入一块数据。
* @param[in] offset PDI 偏移(字节)。
* @param[in] buf 数据缓冲。
* @param[in] len 写入字节数。
*/
static void writePdi(uint16_t offset, const uint8_t *buf, size_t len);
};
#endif /* COMM_ESC_LAN9252_H */