Other Parts Discussed in Thread: SYSCONFIG
器件型号: AM263P4-Q1
主题: SysConfig 中讨论的其他器件
我在 SysConfig 中配置了“I2C 使能中断“设置、如下所示:
I2C1:启用(阻断)
I2C2:启用(阻断)
I2C3:禁用(轮询)
在这种配置下、当对具有以下任务结构的同一内核执行 I2C 控制时、会发生未定义指令异常:
任务 A:使用 I2C1 和 I2C2(调用 I2C_TRANSFER ())
任务 B:使用 I2C3(调用 eeprom_read/write()、它在内部使用 I2C_transfer())
如果我在调试器中的地址 0x0 处设置断点、当出现问题时、程序在 PC=0x0 处停止(这似乎是 NULL 访问)。
故障排除结果
1.删除了 I2C2 的 I2C_TRANSFER() 调用
->未定义指令异常不会发生
2.统一所有 I2C1-I2C3 以启用(分块)
->未定义指令异常不会发生
3.统一所有 I2C1-I2C3 以禁用(轮询)
->未定义指令异常不会发生
根据上述结果、异常仅在以下情况下发生:
-中断启用设置是混合的(I2C1/2:启用、I2C3:禁用)
-多个 I2C 实例同时使用多个任务
问题
1.在 I2C 驱动程序中、是否规范不支持或禁止系统内 I2C 实例之间混合启用中断设置(例如启用了中断的 I2C1/2、禁用中断的 I2C3)?
2.在启用中断的配置中,是否可以混合“阻塞“和“回调“传输模式?
注意:我使用的是 AM263Px MCU+ SDK 09.02.00



