I3C ENTDAA Repeated start waveform

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

I3C ENTDAA Repeated start waveform

6,334 Views
AlicePXLin
Contributor II

Hi @kerryzhou 

請教一個問題,在ENTDAA時,我們設定較快的速度,Repeated start 訊號會異常,如下圖

上方為正常訊號,下方為異常訊號導致認不出Repeated start 

下方的SDA falling 與SCL rising並沒有間隔符合spec 的38.4nS/2

AlicePXLin_0-1639552856777.png

 

AlicePXLin_1-1639552856750.png

 

 

設定如下時會異常

AlicePXLin_2-1639552856809.png

 

Spec 表示Repeated start 需間隔時間

AlicePXLin_3-1639552856778.png

謝謝!

 

Labels (1)
0 Kudos
Reply
18 Replies

6,147 Views
kerryzhou
NXP TechSupport
NXP TechSupport

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。

kerryzhou_0-1641287834415.png

因为没有寄存器具体配置,所以只能调整时钟了。

 

Best Regards,

Kerry

 

 

0 Kudos
Reply

6,054 Views
AlicePXLin
Contributor II

@kerryzhou 

謝謝你的回覆!

以下是我的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);

 

0 Kudos
Reply

6,033 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @AlicePXLin ,

   你可以直接把新的配置放到:

I3C_MasterInit(EXAMPLE_MASTER, &masterConfig, I3C_MASTER_CLOCK_FREQUENCY);

下面,这样MCONFIG寄存器会被你的新值给替换掉。

  然后你可以查看波形。

  另外这个帖子开的时间有点长了,如果还有问题,还请重新建个问题贴。因为我们这边对关贴时间有要求,不能太长。

Best Regards,

Kerry

0 Kudos
Reply

6,325 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @AlicePXLin 

  楼主你好!

 你的波形图,我点开都看不见。

  可能你还是要上传原图,太小了。

  我有个问题,你有没有把你MIMXRT685的主从代码同时修改时钟,是否这两个通信能够正常?

  还是你自己分析波形认为走形认不出?主要看看主从机一样的配置是否可以。

  另外,源SDK代码,不修改时钟,都满足spec的吧?

 

Best Regards,

Kerry

0 Kudos
Reply

6,316 Views
AlicePXLin
Contributor II

Hi @kerryzhou,

重新附圖

第二張圖是 認不出Repeated start

兩者的clock 設定都相同,源SDK代码沒有修改时钟

差別在於slave不一樣

想請問是否有設定可以調整SDA falling與SCL rising的時間差

AlicePXLin_1-1639647159053.png

 

AlicePXLin_2-1639647167150.png

 

在這部分有試過將clock 調慢,SDA falling與SCL rising的時間才有錯開,才能認出Repeated start

 

謝謝

0 Kudos
Reply

6,304 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @AlicePXLin 

  那么你现在的意思是,如果不改SDK, 主从都是RT685, repeat start识别都没有问题。

如果I3C slave换成人家的或者sensor,主机还是RT685,然后repeat认不出来了?然后你想调整START信号SDA falling与SCL rising的时间,是这个意思吗?

我找了下RM还有DS,没有看到相关寄存器去调整的,所以应该是fix的。

要么,可能要降频。

 

Best Regards,

Kerry

0 Kudos
Reply

6,286 Views
AlicePXLin
Contributor II

Hi @kerryzhou 

是的,不過經量測兩個RT685對接的Repeated start 波型

SDA falling與SCL rising的時間差僅5nS,不到Spec提供的19.2nS

這部分能改善嗎?

AlicePXLin_0-1639970251474.png

AlicePXLin_0-1639464402128.png

AlicePXLin_1-1639465924775.png

  

AlicePXLin_0-1639465895788.png

0 Kudos
Reply

6,280 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @AlicePXLin 

   你用示波器测试看看,是否波形时间也是一样的结果?

  然后把示波器的波形也贴上来,谢谢!

 

Best Regards,

Kerry

0 Kudos
Reply

6,273 Views
AlicePXLin
Contributor II

Hi @kerryzhou 

下圖一為示波器量到的波型

圖二為Repeated start 的部分 放大

綠色是SCL,黃色是SDA

量到時間差7.40nS

scope_033.png

scope_032.png

0 Kudos
Reply

6,255 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @AlicePXLin 

  你看我这边测试SDK ENTDAA后面的restart:

kerryzhou_0-1640148929744.png

112ns,比手册定义的要大。

你那边有没有两个MIMXRT685,你可以一个主机一个从机测试看看呢?

 

Best Regards

Kerry

 

0 Kudos
Reply

6,247 Views
AlicePXLin
Contributor II

Hi @kerryzhou 

應要量SCK rising 到SDA falling 的時間

我在圖上標記藍色箭頭的位置

我提供的示波器波型就是兩個RT6852對接的結果

謝謝!

ENTDAA.jpg

0 Kudos
Reply

6,241 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @AlicePXLin 

  你说的是repeated start吗?

kerryzhou_0-1640151947791.png

tCAS才是start的时间

我认为是测试这个tCASr

kerryzhou_1-1640152048216.pngkerryzhou_2-1640152135918.png

不过这个tCBSr的时间确实是比spec要小:

kerryzhou_3-1640152512496.png

真正的repeated start Sr是SCL为高的时候,SDA拉低。

你现在其他的从机就是因为这个tCBSr,也就是repeated start之前时钟条件给的过窄不能识别,对吗?

 

Best Regards,

Kerry

 

0 Kudos
Reply

6,238 Views
AlicePXLin
Contributor II

Hi @kerryzhou 

是的,我想表達的是tCBSr

我認為tCBSr過窄

謝謝!

 

 

0 Kudos
Reply

6,236 Views
kerryzhou
NXP TechSupport
NXP TechSupport

这个确实有问题,我把这个问题提到内部去。

如果有更新,我会告诉你,谢谢你的仔细测试!

 

Best Regards,

Kerry

0 Kudos
Reply

6,223 Views
AlicePXLin
Contributor II

Hi @kerryzhou 

請問你們大概什麼時候會更新SDK 呢?謝謝!

0 Kudos
Reply

6,221 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @AlicePXLin 

   SDK 最近就有更新了,I3C还会添加另外一组interrupt的代码:

kerryzhou_0-1640311751763.png

不过,你提出的问题,这次可能不会被解决掉,我已经提到内部,还在处理过程中。

 

BR,

Kerry

 

 

0 Kudos
Reply

6,216 Views
AlicePXLin
Contributor II

Hi @kerryzhou 

我在頁面上沒有看到2.11.0的版本

請問該去哪下載呢? 謝謝!

AlicePXLin_0-1640312497195.png

 

0 Kudos
Reply

6,214 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi @AlicePXLin 

   不要着急,我给你看的是内部版本,也就是不久会发布的新版本,会添加interrupt 的代码。

  所以,你现在还看不到SDK2.11.0,因为还没发布。

  刚问了SDK内部,说是1月中旬会发布。

Best Regards,

Kerry

0 Kudos
Reply