<?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 SDIO cmd53 without response arrived in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/SDIO-cmd53-without-response-arrived/m-p/606994#M35813</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Friends. I am working on a project about wifi module rtl8189es. Its interface is sdio specification 2.0. I use NXP KSDK2.0 as reference to write the drive code of rtl8189es. The MCU is MK60DN512ZVLQ10, and the MDK version is V5.17.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;The initialization code of rtl8189es in the main.c file will be shown below.&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* Initialize sdhc pins */&lt;BR /&gt; rtl8189es_pin_init();&lt;BR /&gt; /* Initialize SDHC Host Configuration. */&lt;BR /&gt; sdhcConfig-&amp;gt;cardDetectDat3 = false;&lt;BR /&gt; sdhcConfig-&amp;gt;endianMode = kSDHC_EndianModeLittle;&lt;BR /&gt; sdhcConfig-&amp;gt;dmaMode = kSDHC_DmaModeAdma2;&lt;BR /&gt; sdhcConfig-&amp;gt;readWatermarkLevel = 0x10U;&lt;BR /&gt; sdhcConfig-&amp;gt;writeWatermarkLevel = 0x10U; /* 5 params at total */&lt;BR /&gt; SDHC_Init(BOARD_SDHC_BASEADDR, sdhcConfig);&lt;BR /&gt; /* Save host information. */&lt;BR /&gt; card-&amp;gt;host.base = BOARD_SDHC_BASEADDR;&lt;BR /&gt; card-&amp;gt;host.sourceClock_Hz = GetClock(kCoreClock);&lt;BR /&gt; card-&amp;gt;host.transfer = &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;SDHC_TransferFunction&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR /&gt; ret = rtl8189es_init(card);&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Function&amp;nbsp;&lt;SPAN&gt;SDHC_Init(...) can be seen in sdio.c file, which refers to KSDK&amp;nbsp;2.0 LIB. And&amp;nbsp;rtl8189es_init(...) is the setup code of rtl8189es. These two functions both works normally. But I have encountered a problem about CMD53. This command is used to read and write multiple I/O registers. My&amp;nbsp;&lt;SPAN style="color: #000000; background-color: #f9f9f9; font-size: 14px;"&gt;implementation of &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;CMD53 Read&lt;/STRONG&gt;&lt;/SPAN&gt; is shown below.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;status_t host_sdio_cmd53_rw(sd_card_t *card, int write, unsigned fn,&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned addr, int incr_addr, uint32_t *buf, unsigned blocks, unsigned blksz)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assert(card);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sdhc_transfer_t content = {0};&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sdhc_command_t command = {0};&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sdhc_data_t data = {0};&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.index = kSDMMC_IoRwExtended;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument = write ? 0x80000000 : 0x00000000; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt; read 0 &amp;nbsp;/ &amp;nbsp;write 1&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument |= fn &amp;lt;&amp;lt; 28; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt; function num&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument |= incr_addr ? 0x04000000 : 0x00000000; /* OP code */&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument |= addr &amp;lt;&amp;lt; 9; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt; register addr&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(blocks == 1U)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument |= blksz; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt; bytes stream&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument |= 0x08000000 | blocks; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; --&amp;gt; multi-block&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.responseType = kSDHC_ResponseTypeR5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data.blockSize = blksz;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data.blockCount = blocks;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data.rxData = buf;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data.txData = NULL;&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content.command = &amp;amp;command;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content.data = &amp;amp;data;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (kStatus_Success != card-&amp;gt;host.transfer(card-&amp;gt;host.base, &amp;amp;content)) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; --&amp;gt; &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;call&lt;/STRONG&gt;&lt;/SPAN&gt; &amp;nbsp;&lt;STRONG style="color: #ff0000;"&gt;SDHC_TransferFunction&lt;/STRONG&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LIB_TRACE("cmd53 error\r\n");&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return kStatus_SDMMC_TransferFailed;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LIB_TRACE("CMD53 resp0 = %x\r\n", command.response[0U]);&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return kStatus_Success;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #f57527; font-size: 14px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;When I call the function &amp;nbsp; "host_sdio_cmd53_rw(card, 0, 0, 0, 1, buffer, 1, 16);", &amp;nbsp;it will stop at the code which labelled in the red box. Its&amp;nbsp;calling sequence is&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; host_sdio_cmd53_rw --&amp;gt; SDHC_TransferFunction --&amp;gt; SDHC_TransferBlocking --&amp;gt; &amp;nbsp;SDHC_SetAdmaTableConfig --&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;&lt;SPAN&gt;SDHC_StartTransfer --&amp;gt;&amp;nbsp;SDHC_SendCommandBlocking(&lt;SPAN style="background-color: #f9f9f9;"&gt;IRQSTAT[CC] Command Complete&lt;/SPAN&gt;) --&amp;gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;&amp;nbsp;SDHC_TransferDataBlocking --&amp;gt;&amp;nbsp;SDHC_TransferByAdma2Blocking(Transfer not complete)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;It means that the SDHC host can't receive the data, and the register IRQSTAT[TC] always be zero. In the end the Timeout Error occurs and the transfer is terminated.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="169807_169807.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/122531i374403E19A3328AB/image-size/large?v=v2&amp;amp;px=999" role="button" title="169807_169807.png" alt="169807_169807.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="3.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/8568iF4A00489E0D6875B/image-size/large?v=v2&amp;amp;px=999" role="button" title="3.png" alt="3.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;the bit 1 of register IRQSTAT as shown below.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="169823_169823.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/122532i378CF7B41944DAED/image-size/large?v=v2&amp;amp;px=999" role="button" title="169823_169823.png" alt="169823_169823.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="4.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/8611iFEAEC885A2FB9835/image-size/large?v=v2&amp;amp;px=999" role="button" title="4.png" alt="4.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;I have complete the CMD17、24、18、25 &amp;nbsp;for SD memory card , and CMD 52 for SDIO card. However, I fail to complete the CMD53 function. I am trapped in this question for more than 20 days and I need your help. Thx.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;sdio.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;sdio_specification.h.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;sdio.h.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;rtl8189es.h.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;rtl8189es.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;main.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 18 Nov 2016 15:30:44 GMT</pubDate>
    <dc:creator>chaoxu</dc:creator>
    <dc:date>2016-11-18T15:30:44Z</dc:date>
    <item>
      <title>SDIO cmd53 without response arrived</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/SDIO-cmd53-without-response-arrived/m-p/606994#M35813</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Friends. I am working on a project about wifi module rtl8189es. Its interface is sdio specification 2.0. I use NXP KSDK2.0 as reference to write the drive code of rtl8189es. The MCU is MK60DN512ZVLQ10, and the MDK version is V5.17.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;The initialization code of rtl8189es in the main.c file will be shown below.&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* Initialize sdhc pins */&lt;BR /&gt; rtl8189es_pin_init();&lt;BR /&gt; /* Initialize SDHC Host Configuration. */&lt;BR /&gt; sdhcConfig-&amp;gt;cardDetectDat3 = false;&lt;BR /&gt; sdhcConfig-&amp;gt;endianMode = kSDHC_EndianModeLittle;&lt;BR /&gt; sdhcConfig-&amp;gt;dmaMode = kSDHC_DmaModeAdma2;&lt;BR /&gt; sdhcConfig-&amp;gt;readWatermarkLevel = 0x10U;&lt;BR /&gt; sdhcConfig-&amp;gt;writeWatermarkLevel = 0x10U; /* 5 params at total */&lt;BR /&gt; SDHC_Init(BOARD_SDHC_BASEADDR, sdhcConfig);&lt;BR /&gt; /* Save host information. */&lt;BR /&gt; card-&amp;gt;host.base = BOARD_SDHC_BASEADDR;&lt;BR /&gt; card-&amp;gt;host.sourceClock_Hz = GetClock(kCoreClock);&lt;BR /&gt; card-&amp;gt;host.transfer = &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;SDHC_TransferFunction&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR /&gt; ret = rtl8189es_init(card);&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Function&amp;nbsp;&lt;SPAN&gt;SDHC_Init(...) can be seen in sdio.c file, which refers to KSDK&amp;nbsp;2.0 LIB. And&amp;nbsp;rtl8189es_init(...) is the setup code of rtl8189es. These two functions both works normally. But I have encountered a problem about CMD53. This command is used to read and write multiple I/O registers. My&amp;nbsp;&lt;SPAN style="color: #000000; background-color: #f9f9f9; font-size: 14px;"&gt;implementation of &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;CMD53 Read&lt;/STRONG&gt;&lt;/SPAN&gt; is shown below.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;status_t host_sdio_cmd53_rw(sd_card_t *card, int write, unsigned fn,&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned addr, int incr_addr, uint32_t *buf, unsigned blocks, unsigned blksz)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;assert(card);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sdhc_transfer_t content = {0};&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sdhc_command_t command = {0};&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sdhc_data_t data = {0};&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.index = kSDMMC_IoRwExtended;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument = write ? 0x80000000 : 0x00000000; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt; read 0 &amp;nbsp;/ &amp;nbsp;write 1&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument |= fn &amp;lt;&amp;lt; 28; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt; function num&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument |= incr_addr ? 0x04000000 : 0x00000000; /* OP code */&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument |= addr &amp;lt;&amp;lt; 9; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt; register addr&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(blocks == 1U)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument |= blksz; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--&amp;gt; bytes stream&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.argument |= 0x08000000 | blocks; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; --&amp;gt; multi-block&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;command.responseType = kSDHC_ResponseTypeR5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data.blockSize = blksz;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data.blockCount = blocks;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data.rxData = buf;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data.txData = NULL;&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content.command = &amp;amp;command;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content.data = &amp;amp;data;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (kStatus_Success != card-&amp;gt;host.transfer(card-&amp;gt;host.base, &amp;amp;content)) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; --&amp;gt; &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;call&lt;/STRONG&gt;&lt;/SPAN&gt; &amp;nbsp;&lt;STRONG style="color: #ff0000;"&gt;SDHC_TransferFunction&lt;/STRONG&gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LIB_TRACE("cmd53 error\r\n");&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return kStatus_SDMMC_TransferFailed;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LIB_TRACE("CMD53 resp0 = %x\r\n", command.response[0U]);&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return kStatus_Success;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #f57527; font-size: 14px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;When I call the function &amp;nbsp; "host_sdio_cmd53_rw(card, 0, 0, 0, 1, buffer, 1, 16);", &amp;nbsp;it will stop at the code which labelled in the red box. Its&amp;nbsp;calling sequence is&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; host_sdio_cmd53_rw --&amp;gt; SDHC_TransferFunction --&amp;gt; SDHC_TransferBlocking --&amp;gt; &amp;nbsp;SDHC_SetAdmaTableConfig --&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;&lt;SPAN&gt;SDHC_StartTransfer --&amp;gt;&amp;nbsp;SDHC_SendCommandBlocking(&lt;SPAN style="background-color: #f9f9f9;"&gt;IRQSTAT[CC] Command Complete&lt;/SPAN&gt;) --&amp;gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;&amp;nbsp;SDHC_TransferDataBlocking --&amp;gt;&amp;nbsp;SDHC_TransferByAdma2Blocking(Transfer not complete)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;It means that the SDHC host can't receive the data, and the register IRQSTAT[TC] always be zero. In the end the Timeout Error occurs and the transfer is terminated.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="169807_169807.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/122531i374403E19A3328AB/image-size/large?v=v2&amp;amp;px=999" role="button" title="169807_169807.png" alt="169807_169807.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="3.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/8568iF4A00489E0D6875B/image-size/large?v=v2&amp;amp;px=999" role="button" title="3.png" alt="3.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;the bit 1 of register IRQSTAT as shown below.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="169823_169823.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/122532i378CF7B41944DAED/image-size/large?v=v2&amp;amp;px=999" role="button" title="169823_169823.png" alt="169823_169823.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="4.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/8611iFEAEC885A2FB9835/image-size/large?v=v2&amp;amp;px=999" role="button" title="4.png" alt="4.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #f9f9f9; color: #000000; font-size: 14px;"&gt;I have complete the CMD17、24、18、25 &amp;nbsp;for SD memory card , and CMD 52 for SDIO card. However, I fail to complete the CMD53 function. I am trapped in this question for more than 20 days and I need your help. Thx.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;sdio.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;sdio_specification.h.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;sdio.h.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;rtl8189es.h.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;rtl8189es.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337444"&gt;main.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 18 Nov 2016 15:30:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/SDIO-cmd53-without-response-arrived/m-p/606994#M35813</guid>
      <dc:creator>chaoxu</dc:creator>
      <dc:date>2016-11-18T15:30:44Z</dc:date>
    </item>
  </channel>
</rss>

