Hi @Harry_Zhang
I3C的CCC command SETXTIME有设置进入 Async Mode 0的命令,
我看到在MCXN的spec里I3C slave有进入Async Mode 0的寄存器设置SSTATUS的bit31-30 TIMECTRL
I3C master是怎么设置的,有sample code可以参考吗?
BR
Yvan
Hi @yvan_yan
SETXTIME (0x28h) 是 CCC 广播命令,用来设置 Target (Slave) 的 Time Control mode。
这个命令允许主机(I3C Controller)要求所有 Target 进入 Synchronous mode 或 Asynchronous mode (0/1)。
请问您是需要I3C master 发送0x28的广播命令的代码么?
BR
Harry
Hi @Harry_Zhang
是的
Target (Slave) 进入 Asynchronous mode 0后,Target 会发送IBI,I3C Controller会根据这个IBI的数据进行计算,这部分是硬件还是软件实现,有相关代码可以参考吗?
BR
Yvan
Hi @yvan_yan
“I3C Controller会根据这个IBI的数据进行计算,这部分是硬件还是软件实现?”
您好,我查了一下RM手册。
这部分是需要通过软件实现的。相关寄存器为STCCLOCK
Controller 必须用 STCCLOCK(由 Target 提供或在配置时告知)来做换算。
寄存器 STCCLOCK 提供:
FREQ:时钟频率
ACCURACY:时钟精度
Controller 用这两个参数就能把 Target 报告的 tick 转换为实际时间(ns/µs/ms)。
“有相关代码可以参考吗?”
很抱歉,目前没有相关demo,并且i3c driver也没有相关API,实现相关功能只能结合SDK demo配置相关寄存器。
BR
Harry
Hi @Harry_Zhang
进入Asynchronous mode 0模式后,I3C Controller 除了需要通过IBI payload获得Target 的数据外,还需要知道C_REF(IBI ACK)和C_C2(IBI MD Byte后T-Bit) I3C Controller的timestamp,这两个点应该怎么获得?
• C_REF: First SCL positive-going edge after the IBI ACK
• C_C2: First SCL positive-going edge after the T-Bit of the IBI’s Mandatory Byte
BR
Yvan