<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic MIMXRT685 I3C Sample Code have OREAD(Over Read Error) Problem in i.MX RT Crossover MCUs</title>
    <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/MIMXRT685-I3C-Sample-Code-have-OREAD-Over-Read-Error-Problem/m-p/1275393#M14182</link>
    <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;IDE：Keil MDK&lt;/P&gt;&lt;P&gt;SDK：SDK_2.9.0_EVK-MIMXRT685&lt;/P&gt;&lt;P&gt;Board:MIMXRT685-EVK&lt;/P&gt;&lt;P&gt;Sample Code: driver example-&amp;gt;i3c-&amp;gt;i3c_polling_b2b_transfer_master&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Problem：&lt;/P&gt;&lt;P&gt;OREAD bit in the MERRWARN register remains high when I&amp;nbsp;&lt;SPAN&gt;execute&lt;/SPAN&gt; I3C_MasterInit().I found that the problem lies in RESET_PeripheralReset(kI3cResets[instance]) in I3C_MasterInit(),When PeripheralReset is executed, the OREAD Bit will remain high and cannot directly clear the OREAD Bit,This will cause I3C to fail to transmit data due to detection OREAD errors .&lt;/P&gt;&lt;P&gt;May I ask if I have overlooked something that caused this problem?&lt;/P&gt;&lt;P&gt;-----------------------------------Test Code-------------------------------------------------------&lt;/P&gt;&lt;P&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt;i3c_master_config_t masterConfig;&lt;BR /&gt;i3c_master_transfer_t masterXfer;&lt;BR /&gt;status_t result = kStatus_Success;&lt;/P&gt;&lt;P&gt;/* Attach main clock to I3C, 396MHz / 4 = 99MHz. */&lt;BR /&gt;CLOCK_AttachClk(kMAIN_CLK_to_I3C_CLK);&lt;BR /&gt;CLOCK_SetClkDiv(kCLOCK_DivI3cClk, 4);&lt;/P&gt;&lt;P&gt;BOARD_InitBootPins();&lt;BR /&gt;BOARD_BootClockRUN();&lt;BR /&gt;BOARD_InitDebugConsole();&lt;/P&gt;&lt;P&gt;PRINTF("\r\nI3C board2board polling example -- Master transfer.\r\n");&lt;/P&gt;&lt;P&gt;/* I3C mode: Set up i3c master to work in I3C mode, send data to slave*/&lt;BR /&gt;/* First data in txBuff is data length of the transmitting data. */&lt;BR /&gt;g_master_txBuff[0] = I3C_DATA_LENGTH - 1U;&lt;BR /&gt;for (uint32_t i = 1U; i &amp;lt; I3C_DATA_LENGTH; i++)&lt;BR /&gt;{&lt;BR /&gt;g_master_txBuff[i] = i - 1;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;PRINTF("\r\nStart to do I3C master transfer in I2C mode.\r\n");&lt;/P&gt;&lt;P&gt;PRINTF("Master will send data :");&lt;BR /&gt;for (uint32_t i = 0U; i &amp;lt; I3C_DATA_LENGTH - 1U; i++)&lt;BR /&gt;{&lt;BR /&gt;if (i % 8 == 0)&lt;BR /&gt;{&lt;BR /&gt;PRINTF("\r\n");&lt;BR /&gt;}&lt;BR /&gt;PRINTF("0x%2x ", g_master_txBuff[i + 1]);&lt;BR /&gt;}&lt;BR /&gt;PRINTF("\r\n\r\n");&lt;/P&gt;&lt;P&gt;I3C_MasterGetDefaultConfig(&amp;amp;masterConfig);&lt;BR /&gt;masterConfig.baudRate_Hz.i2cBaud = EXAMPLE_I2C_BAUDRATE;&lt;BR /&gt;masterConfig.baudRate_Hz.i3cPushPullBaud = 3900000U;&lt;BR /&gt;masterConfig.baudRate_Hz.i3cOpenDrainBaud = 500000U;&lt;BR /&gt;masterConfig.enableOpenDrainStop = false;&lt;BR /&gt;I3C_MasterInit(EXAMPLE_MASTER, &amp;amp;masterConfig, I3C_MASTER_CLOCK_FREQUENCY);&lt;BR /&gt;EXAMPLE_MASTER-&amp;gt;MERRWARN = 0x0;&lt;BR /&gt;while(1);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;-----------------------------------Test Code-------------------------------------------------------&lt;/P&gt;</description>
    <pubDate>Wed, 12 May 2021 06:49:39 GMT</pubDate>
    <dc:creator>Andy_Sun</dc:creator>
    <dc:date>2021-05-12T06:49:39Z</dc:date>
    <item>
      <title>MIMXRT685 I3C Sample Code have OREAD(Over Read Error) Problem</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/MIMXRT685-I3C-Sample-Code-have-OREAD-Over-Read-Error-Problem/m-p/1275393#M14182</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;IDE：Keil MDK&lt;/P&gt;&lt;P&gt;SDK：SDK_2.9.0_EVK-MIMXRT685&lt;/P&gt;&lt;P&gt;Board:MIMXRT685-EVK&lt;/P&gt;&lt;P&gt;Sample Code: driver example-&amp;gt;i3c-&amp;gt;i3c_polling_b2b_transfer_master&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Problem：&lt;/P&gt;&lt;P&gt;OREAD bit in the MERRWARN register remains high when I&amp;nbsp;&lt;SPAN&gt;execute&lt;/SPAN&gt; I3C_MasterInit().I found that the problem lies in RESET_PeripheralReset(kI3cResets[instance]) in I3C_MasterInit(),When PeripheralReset is executed, the OREAD Bit will remain high and cannot directly clear the OREAD Bit,This will cause I3C to fail to transmit data due to detection OREAD errors .&lt;/P&gt;&lt;P&gt;May I ask if I have overlooked something that caused this problem?&lt;/P&gt;&lt;P&gt;-----------------------------------Test Code-------------------------------------------------------&lt;/P&gt;&lt;P&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt;i3c_master_config_t masterConfig;&lt;BR /&gt;i3c_master_transfer_t masterXfer;&lt;BR /&gt;status_t result = kStatus_Success;&lt;/P&gt;&lt;P&gt;/* Attach main clock to I3C, 396MHz / 4 = 99MHz. */&lt;BR /&gt;CLOCK_AttachClk(kMAIN_CLK_to_I3C_CLK);&lt;BR /&gt;CLOCK_SetClkDiv(kCLOCK_DivI3cClk, 4);&lt;/P&gt;&lt;P&gt;BOARD_InitBootPins();&lt;BR /&gt;BOARD_BootClockRUN();&lt;BR /&gt;BOARD_InitDebugConsole();&lt;/P&gt;&lt;P&gt;PRINTF("\r\nI3C board2board polling example -- Master transfer.\r\n");&lt;/P&gt;&lt;P&gt;/* I3C mode: Set up i3c master to work in I3C mode, send data to slave*/&lt;BR /&gt;/* First data in txBuff is data length of the transmitting data. */&lt;BR /&gt;g_master_txBuff[0] = I3C_DATA_LENGTH - 1U;&lt;BR /&gt;for (uint32_t i = 1U; i &amp;lt; I3C_DATA_LENGTH; i++)&lt;BR /&gt;{&lt;BR /&gt;g_master_txBuff[i] = i - 1;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;PRINTF("\r\nStart to do I3C master transfer in I2C mode.\r\n");&lt;/P&gt;&lt;P&gt;PRINTF("Master will send data :");&lt;BR /&gt;for (uint32_t i = 0U; i &amp;lt; I3C_DATA_LENGTH - 1U; i++)&lt;BR /&gt;{&lt;BR /&gt;if (i % 8 == 0)&lt;BR /&gt;{&lt;BR /&gt;PRINTF("\r\n");&lt;BR /&gt;}&lt;BR /&gt;PRINTF("0x%2x ", g_master_txBuff[i + 1]);&lt;BR /&gt;}&lt;BR /&gt;PRINTF("\r\n\r\n");&lt;/P&gt;&lt;P&gt;I3C_MasterGetDefaultConfig(&amp;amp;masterConfig);&lt;BR /&gt;masterConfig.baudRate_Hz.i2cBaud = EXAMPLE_I2C_BAUDRATE;&lt;BR /&gt;masterConfig.baudRate_Hz.i3cPushPullBaud = 3900000U;&lt;BR /&gt;masterConfig.baudRate_Hz.i3cOpenDrainBaud = 500000U;&lt;BR /&gt;masterConfig.enableOpenDrainStop = false;&lt;BR /&gt;I3C_MasterInit(EXAMPLE_MASTER, &amp;amp;masterConfig, I3C_MASTER_CLOCK_FREQUENCY);&lt;BR /&gt;EXAMPLE_MASTER-&amp;gt;MERRWARN = 0x0;&lt;BR /&gt;while(1);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;-----------------------------------Test Code-------------------------------------------------------&lt;/P&gt;</description>
      <pubDate>Wed, 12 May 2021 06:49:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/MIMXRT685-I3C-Sample-Code-have-OREAD-Over-Read-Error-Problem/m-p/1275393#M14182</guid>
      <dc:creator>Andy_Sun</dc:creator>
      <dc:date>2021-05-12T06:49:39Z</dc:date>
    </item>
    <item>
      <title>Re: MIMXRT685 I3C Sample Code have OREAD(Over Read Error) Problem</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/MIMXRT685-I3C-Sample-Code-have-OREAD-Over-Read-Error-Problem/m-p/1277714#M14256</link>
      <description>&lt;P&gt;Hello,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I was able to replicate the behavior that you mentioned. I'm checking this internally, I will provide you an update as soon as possible.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Victor&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 May 2021 16:43:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/MIMXRT685-I3C-Sample-Code-have-OREAD-Over-Read-Error-Problem/m-p/1277714#M14256</guid>
      <dc:creator>victorjimenez</dc:creator>
      <dc:date>2021-05-17T16:43:33Z</dc:date>
    </item>
    <item>
      <title>Re: MIMXRT685 I3C Sample Code have OREAD(Over Read Error) Problem</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/MIMXRT685-I3C-Sample-Code-have-OREAD-Over-Read-Error-Problem/m-p/1284646#M14471</link>
      <description>&lt;P&gt;Hi Victor,&lt;/P&gt;&lt;P&gt;Thank you for your willingness to assist me,&lt;/P&gt;&lt;P&gt;Is there a new version update?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 31 May 2021 08:48:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/MIMXRT685-I3C-Sample-Code-have-OREAD-Over-Read-Error-Problem/m-p/1284646#M14471</guid>
      <dc:creator>Andy_Sun</dc:creator>
      <dc:date>2021-05-31T08:48:34Z</dc:date>
    </item>
    <item>
      <title>Re: MIMXRT685 I3C Sample Code have OREAD(Over Read Error) Problem</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/MIMXRT685-I3C-Sample-Code-have-OREAD-Over-Read-Error-Problem/m-p/1289309#M14603</link>
      <description>&lt;P&gt;Hello,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The MERRWARN.OREAD gets set when single-stepping through the code with the RxFIFO already empty (as is the case when initializing the IP after a reset). With the debugger updating the peripheral view with every step made thru the driver code, sooner or later the Rx FIFO will get empty and the OREAD will get set.&lt;/P&gt;
&lt;P&gt;This can be avoided if the debugger does not read the RxFIFO when updating the peripheral register view but the end-user doesn't have that level of control on the tool. As a workaround, you can close the I3C peripheral view, during the initialization. If you run the application normally, you will see that the OREAD doesn't turn on during the initialization.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Victor&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Jun 2021 17:03:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/MIMXRT685-I3C-Sample-Code-have-OREAD-Over-Read-Error-Problem/m-p/1289309#M14603</guid>
      <dc:creator>victorjimenez</dc:creator>
      <dc:date>2021-06-08T17:03:57Z</dc:date>
    </item>
  </channel>
</rss>

