您好!
我使用具有手动从器件地址确认模式(MAN_SLAVE_ACK = 1)的 PMBus 模块
以下代码已启用
//初始 PMBus_A 配置(PEC 启用、手动地址和命令、RX 字节手动 ACK 设置为1)
PMBUS_configTarget (PMBUSA_BASE、
PMBus_target_enable_PEC_processing |
PMBus_target_enable_manual_ACK |
PMBus_target_enable_manual_CMD_ACK |
PMBus_TARGET_AUTO_ACK_1_BYTE);
//初始 PMBus_A 中断触发类型
PMBus_enableInterrupt (PMBUSA_BASE、
PMBUS_INT_TARGET_ADDR_READY |
PMBUS_INT_DATA_READY |
PMBUS_INT_DATA_REQUEST |
PMBUS_INT_EOM);
================================
在 PMBus_A 中断 ISR 中、当发生从器件地址接收中断时、我会使用以下源代码发送 ACK:
//获取当前 PMBus_A 状态
G_PMBus_CTRL_VAR.PMBus_A_sta = PMBus_getStatus (PMBUSA_base);
//接收到从地址
if (g_PMBus_CTRL_VAR.PMBus_A_sta &(uint32_t) PMBUS_INTSRC_TARGET_ADDR_READY)
{
// PMBus 初始 Re 缓冲器
Initial_Ctrl_Buffer ();
PMBUS_ackAddress (PMBUSA_BASE、(PMBUS_SLAVE_ADDR >> 1)、
G_PMBus_CTRL_VAR.PMBus_A_sta、
&G_PMBUS_CTRL_VAR.rev_slave_addr);
}
但从器件始终向 I2C 主器件发送 NACK。
是否需要签出任何配置/操作?