你好
我们在定制板上使用 S32G399A 芯片。
我们使用 2 个内核,其中内核 0 只有一个分区,内核 1 有两个分区。
我们使用 3 个 I2C 通道:
现在,当我们尝试访问 I2C 通道 1 时,该通道总是显示"I2C_IP_TIMEOUT_STATUS" ,其他通道显示"I2C_IP_SUCCESS_STATUS" 。
请你们调查一下这个问题。
我们使用的是 SW32G_RTD_4.4_4.0.2 版本。
我们正在使用 M 内核侧的 I2C 通道。
此致,
温斯顿-刘易斯
你好,@winstonlewis、
感谢您联系我们,感谢您与我们分享您的问题的所有相关细节。
能否共享三个实例中 I2C 寄存器的完整转储数据?这意味着转储以下范围:
I2C_0: 0x401E_4000 - 0x401E_4006
I2C_1: 0x401E_8000 - 0x401E_8006
I2C_4: 0x402D_C000 - 0x402D_C006
你能否也请示波器或逻辑分析仪检查一下你正在使用 I2C_1 的设备是否正在传输回 S32G 控制器?
预先致谢
你好@alejandro_e、
感谢您的回复。
下面是寄存器的转储信息:
I2C_1:
I2C_1I2C_1I2C_1I2C_1I2C_1
I2C_4:
I2C_4I2C_4I2C_4I2C_4I2C_4
I2C_0:
内存转储不显示任何值。
I2C_0I2C_0I2C_0I2C_0I2C_0
当我们在示波器上探测 SDA 和 SCL 线路时,没有观察到任何 I2C 活动;这两条线路始终保持高电平。
谢谢& 、
温斯顿-刘易斯
你好@alejandro_e、
我说的分区是指在核心 1 中,我们有两个操作系统应用程序,一个用于 ASIL,另一个用于 QM。我们为 ASIL 应用分配了 I2C 4,为 QM 应用分配了 I2C 1,而不是 RM/XRDC 分区。
只是想了解需要哪些配置截图。
寄存器转储是在 I2C 进入超时后进行的。
谢谢& 、
温斯顿-刘易斯
你好,@winstonlewis、
谢谢你的解释,我现在明白你是在做 SW 分区。那么我猜你是在使用 EcuC 创建分区。如果这是正确的,请联系您的软件供应商,因为eCUC NXP不提供任何实现,我们只提供短截线供供应商填充,我目前的结论是,您的QM分区无法完全访问I2C_1所需的内存部分。另外,检查你共享的寄存器值,模块中似乎没有错误,事实上,传输似乎已经完成,我可以看到 I2C总线状态(IBSR)的第七位为1。
请告诉我我的假设是否正确。
你好,@winstonlewis、
感谢您提供的信息。我发现 I2C_1 和 I2C_4 的配置是一样的,虽然 I2C_0 不显示寄存器值很不正常,但由于问题不在 I2C_0 上,我将重点讨论 I2C_1。当您提到分区时,我以为您指的是 RM/XRDC 分区,您能否发送 M7_0 和 M7_1 分区的配置截图?
另外,注册表转储是什么时候进行的?例如,在初始化或发送信息后。
感谢