Hi @kerryzhou
請教一個問題,在ENTDAA時,我們設定較快的速度,Repeated start 訊號會異常,如下圖
上方為正常訊號,下方為異常訊號導致認不出Repeated start
下方的SDA falling 與SCL rising並沒有間隔符合spec 的38.4nS/2
設定如下時會異常
Spec 表示Repeated start 需間隔時間
謝謝!
Hi @AlicePXLin ,
非常感谢你的耐心等待。
我刚得到内部的回复,关于tCBSr小于spec的问题,内部建议调整PPBAUD可以设置更多的实际。你可以试试这个配置:
FCLK: 25MHz
I3C->MCONFIG =
(I3C->MCONFIG & ~(I3C_MCONFIG_SKEW_MASK | I3C_MCONFIG_PPBAUD_MASK | I3C_MCONFIG_PPLOW_MASK | I3C_MCONFIG_ODBAUD_MASK | I3C_MCONFIG_I2CBAUD_MASK | I3C_MCONFIG_ODSTOP_MASK)) |
I3C_MCONFIG_SKEW(0) | // SKEW = 0
I3C_MCONFIG_PPBAUD(6) | // THPP = 40ns * (7) = 280ns
I3C_MCONFIG_PPLOW(1) | // TLPP = 280ns+1*40ns
I3C_MCONFIG_ODBAUD(0) | // ODBAUD = THPP*(0)= 280ns
I3C_MCONFIG_ODHPP(1) | // ODHPP=1 use PPBAUD 280ns for high
I3C_MCONFIG_ODSTOP(0) |
I3C_MCONFIG_I2CBAUD(8); // 5*ODBAUD = 5*280ns for high, 5*ODBAUD = 5*280ns for low
这边有组tSU-STA的测试达到了640ns。
因为没有寄存器具体配置,所以只能调整时钟了。
Best Regards,
Kerry
謝謝你的回覆!
以下是我的code,你上述的那段應該加在哪邊好呢?謝謝!
CLOCK_AttachClk(kMAIN_CLK_to_I3C_CLK);
CLOCK_SetClkDiv(kCLOCK_DivI3cClk, 4);
BOARD_InitBootPins();
BOARD_BootClockRUN();
BOARD_InitDebugConsole();
I3C_MasterGetDefaultConfig(&masterConfig);
masterConfig.baudRate_Hz.i2cBaud = EXAMPLE_I2C_BAUDRATE;
masterConfig.baudRate_Hz.i3cPushPullBaud = 4000000U;
masterConfig.baudRate_Hz.i3cOpenDrainBaud = 1500000U;
masterConfig.enableOpenDrainStop = false;
I3C_MasterInit(EXAMPLE_MASTER, &masterConfig, I3C_MASTER_CLOCK_FREQUENCY);
Hi @AlicePXLin ,
你可以直接把新的配置放到:
I3C_MasterInit(EXAMPLE_MASTER, &masterConfig, I3C_MASTER_CLOCK_FREQUENCY);
下面,这样MCONFIG寄存器会被你的新值给替换掉。
然后你可以查看波形。
另外这个帖子开的时间有点长了,如果还有问题,还请重新建个问题贴。因为我们这边对关贴时间有要求,不能太长。
Best Regards,
Kerry
Hi @AlicePXLin
楼主你好!
你的波形图,我点开都看不见。
可能你还是要上传原图,太小了。
我有个问题,你有没有把你MIMXRT685的主从代码同时修改时钟,是否这两个通信能够正常?
还是你自己分析波形认为走形认不出?主要看看主从机一样的配置是否可以。
另外,源SDK代码,不修改时钟,都满足spec的吧?
Best Regards,
Kerry
Hi @kerryzhou,
重新附圖
第二張圖是 認不出Repeated start
兩者的clock 設定都相同,源SDK代码沒有修改时钟
差別在於slave不一樣
想請問是否有設定可以調整SDA falling與SCL rising的時間差
在這部分有試過將clock 調慢,SDA falling與SCL rising的時間才有錯開,才能認出Repeated start
謝謝
Hi @AlicePXLin
那么你现在的意思是,如果不改SDK, 主从都是RT685, repeat start识别都没有问题。
如果I3C slave换成人家的或者sensor,主机还是RT685,然后repeat认不出来了?然后你想调整START信号SDA falling与SCL rising的时间,是这个意思吗?
我找了下RM还有DS,没有看到相关寄存器去调整的,所以应该是fix的。
要么,可能要降频。
Best Regards,
Kerry
Hi @kerryzhou
是的,不過經量測兩個RT685對接的Repeated start 波型
SDA falling與SCL rising的時間差僅5nS,不到Spec提供的19.2nS
這部分能改善嗎?
Hi @AlicePXLin
你看我这边测试SDK ENTDAA后面的restart:
112ns,比手册定义的要大。
你那边有没有两个MIMXRT685,你可以一个主机一个从机测试看看呢?
Best Regards
Kerry
Hi @AlicePXLin
你说的是repeated start吗?
tCAS才是start的时间
我认为是测试这个tCASr
不过这个tCBSr的时间确实是比spec要小:
真正的repeated start Sr是SCL为高的时候,SDA拉低。
你现在其他的从机就是因为这个tCBSr,也就是repeated start之前时钟条件给的过窄不能识别,对吗?
Best Regards,
Kerry
这个确实有问题,我把这个问题提到内部去。
如果有更新,我会告诉你,谢谢你的仔细测试!
Best Regards,
Kerry
Hi @kerryzhou
請問你們大概什麼時候會更新SDK 呢?謝謝!
Hi @AlicePXLin
不要着急,我给你看的是内部版本,也就是不久会发布的新版本,会添加interrupt 的代码。
所以,你现在还看不到SDK2.11.0,因为还没发布。
刚问了SDK内部,说是1月中旬会发布。
Best Regards,
Kerry