<?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 Re: Vybrid eSDHC Controller in Vybrid Processors</title>
    <link>https://community.nxp.com/t5/Vybrid-Processors/Vybrid-eSDHC-Controller/m-p/1044381#M6022</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This got cut out of the above post:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="CMD8.PNG"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/105367i350BDFA925EAD74E/image-size/large?v=v2&amp;amp;px=999" role="button" title="CMD8.PNG" alt="CMD8.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 04 May 2020 20:49:58 GMT</pubDate>
    <dc:creator>ogj</dc:creator>
    <dc:date>2020-05-04T20:49:58Z</dc:date>
    <item>
      <title>Vybrid eSDHC Controller</title>
      <link>https://community.nxp.com/t5/Vybrid-Processors/Vybrid-eSDHC-Controller/m-p/1044380#M6021</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am trying to get a simple SDHC driver to work using the A5 core of the Vybrid processor. The board is a custom, however I know that both the board and the card are functional as I can use a Freescale driver and both work fine. I have pared down the driver to better understand what is going on in the initialization of an SDHC card.&lt;/P&gt;&lt;P&gt;I’m using PLL3 @ 480 MHz /5 to supply the clock into the eSDHC module. This supplies a 96 MHz clock into the module. During initialization this is divided down by the SYSCTL dividers to 400 KHz (/16 /15). The PRSSTAT_SDSTB bit is set so I know the module clock is functional. Then I run the following code:&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; // Initialize the SDHC IO pins and module clock&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; _esdhc_hw_init(1);&amp;nbsp;&amp;nbsp;&amp;nbsp; //set up the pins for SDHC 1&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; _esdhc_clk_init(1);&amp;nbsp;&amp;nbsp;&amp;nbsp; //set up the clock&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; // Disable the SDHC card clock per errata e3980&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;SYSCTL &amp;amp;= ~SDHC_SYSCTL_SDCLKEN_MASK;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; // Reset the controller&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;SYSCTL |= SDHC_SYSCTL_RSTA_MASK;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; // Set to low speed for initialization&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; _esdhc_set_baudrate_low(esdhc_device_ptr-&amp;gt;ESDHC_REG_PTR,&amp;nbsp;&amp;nbsp; //pointer to reg set&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _esdhc_init_parms-&amp;gt;CLOCK_SPEED,&amp;nbsp;&amp;nbsp;&amp;nbsp; //incoming clock speed&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400000);&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;nbsp;&amp;nbsp; //desired clock speed&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp; // Enable the SDHC card clock again&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;SYSCTL |=&amp;nbsp; SDHC_SYSCTL_SDCLKEN_MASK;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; // CMD0 - Go to idle - reset card&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; command.COMMAND = CMD0;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; command.ARGUMENT = 0;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; command.BLOCKS = 0;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; val = _esdhc_send_cmd(esdhc_device_ptr, &amp;amp;command);&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; if(val &amp;amp; ESDHC_ERROR_MASK)&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return(ESDHC_ERROR_INIT_FAILED);&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; // CMD8 - Check HC support, verify 2.7 to 3.6V operation&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; command.COMMAND = CMD8;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; command.ARGUMENT = 0x000001AA;&amp;nbsp;&amp;nbsp; // Voltage supply 2.7-3.6V 0x100 + 0xAA check pattern&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; command.BLOCKS = 0;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp; val = _esdhc_send_cmd(esdhc_device_ptr, &amp;amp;command);&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;Sending CMD8 always fails showing the card didn’t respond after 64 clocks. The register setup right after sending&amp;nbsp; CMD8 is:&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp; &lt;IMG /&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;Note that the card clock is disabled using bit SDCLKEN before the RSTA and the clock dividers are set in SYSCTL per errata e3980. Then the clock is re-enabled. The send_cmd checks for no ongoing activity. All of the registers seem OK. Any ideas why the card doesn’t respond?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 May 2020 20:46:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Vybrid-Processors/Vybrid-eSDHC-Controller/m-p/1044380#M6021</guid>
      <dc:creator>ogj</dc:creator>
      <dc:date>2020-05-04T20:46:31Z</dc:date>
    </item>
    <item>
      <title>Re: Vybrid eSDHC Controller</title>
      <link>https://community.nxp.com/t5/Vybrid-Processors/Vybrid-eSDHC-Controller/m-p/1044381#M6022</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This got cut out of the above post:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="CMD8.PNG"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/105367i350BDFA925EAD74E/image-size/large?v=v2&amp;amp;px=999" role="button" title="CMD8.PNG" alt="CMD8.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 May 2020 20:49:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Vybrid-Processors/Vybrid-eSDHC-Controller/m-p/1044381#M6022</guid>
      <dc:creator>ogj</dc:creator>
      <dc:date>2020-05-04T20:49:58Z</dc:date>
    </item>
    <item>
      <title>Re: Vybrid eSDHC Controller</title>
      <link>https://community.nxp.com/t5/Vybrid-Processors/Vybrid-eSDHC-Controller/m-p/1044382#M6023</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I was doing some comparison to the code that works and noticed that I wasn't sending the 80 initial clock pulses by setting the INITA bit in SYSCTL. Here is the new code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; // Initialize the SDHC pins and clock&lt;BR /&gt;&amp;nbsp;&amp;nbsp; _esdhc_hw_init(1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; _esdhc_clk_init(1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; // Disable the SDHC card clock per errata e3980&lt;BR /&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;SYSCTL &amp;amp;= ~SDHC_SYSCTL_SDCLKEN_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; // Reset the controller&lt;BR /&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;SYSCTL |= SDHC_SYSCTL_RSTA_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; while(esdhc_ptr-&amp;gt;SYSCTL &amp;amp; SDHC_SYSCTL_RSTA_MASK);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; // Just to keep card detection working&lt;BR /&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;SYSCTL = SDHC_SYSCTL_PEREN_MASK;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; // Switch off external DMA requests&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;VENDOR = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; // Set any default size of data block&lt;BR /&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;BLKATTR = SDHC_BLKATTR_BLKCNT(1) | SDHC_BLKATTR_BLKSIZE(512);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;WML = SDHC_WML_RDWML(1) | SDHC_WML_WRWML(1); /* To do: set up the right value */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; // Poll inhibit bits&lt;BR /&gt;&amp;nbsp;&amp;nbsp; while(esdhc_ptr-&amp;gt;PRSSTAT &amp;amp; (SDHC_PRSSTAT_CIHB_MASK | SDHC_PRSSTAT_CDIHB_MASK));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; // Set to low speed for initialization&lt;BR /&gt;&amp;nbsp;&amp;nbsp; _esdhc_set_baudrate_low(esdhc_device_ptr-&amp;gt;ESDHC_REG_PTR,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //pointer to reg set&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esdhc_device_ptr-&amp;gt;INIT-&amp;gt;CLOCK_SPEED,&amp;nbsp;&amp;nbsp; //incoming clock speed&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400000);&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //desired card clock speed&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; // Enable the SDHC card clock&lt;BR /&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;SYSCTL |= SDHC_SYSCTL_SDCLKEN_MASK;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; // Clear flags in IRQSTAT (write 1 to clear)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;IRQSTAT = 0xFFFF;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;IRQSTATEN =&amp;nbsp; SDHC_IRQSTATEN_DMAESEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // DMA Error Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_AC12ESEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Auto CMD12 Error Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_DEBESEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Data End Bit Error Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_DCESEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Data CRC Error Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_DTOESEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Data Timeout Error Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_CIESEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Command Index Error Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_CEBESEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Command End Bit Error Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_CCESEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Command CRC Error Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_CTOESEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Command Timeout Error Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; //| SDHC_IRQSTATEN_CINTSEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Card Interrupt Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_CRMSEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Card Removal Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_CINSEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Card Insertion Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; //| SDHC_IRQSTATEN_BRRSEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Buffer Read Ready Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; //| SDHC_IRQSTATEN_BWRSEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Buffer Write Ready Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_DINTSEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // DMA Interrupt Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_BGESEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Block Gap Event Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_TCSEN_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Transfer Complete Status Enable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; | SDHC_IRQSTATEN_CCSEN_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Command Complete Status Enable&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; // 80 initial clocks&lt;BR /&gt;&amp;nbsp;&amp;nbsp; esdhc_ptr-&amp;gt;SYSCTL |= SDHC_SYSCTL_INITA_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; while(esdhc_ptr-&amp;gt;SYSCTL &amp;amp; SDHC_SYSCTL_INITA_MASK);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; // Check card&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(esdhc_ptr-&amp;gt;PRSSTAT &amp;amp; SDHC_PRSSTAT_CINS_MASK)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esdhc_device_ptr-&amp;gt;CARD = ESDHC_CARD_UNKNOWN;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; // CMD0 - Go to idle - reset card&lt;BR /&gt;&amp;nbsp;&amp;nbsp; command.COMMAND = CMD0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; command.ARGUMENT = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; command.BLOCKS = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; val = _esdhc_send_cmd(esdhc_device_ptr, &amp;amp;command);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if(val &amp;amp; ESDHC_ERROR_MASK)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return(ESDHC_ERROR_INIT_FAILED);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; // CMD8 - Check HC support, verify 2.7 to 3.6V operation&lt;BR /&gt;&amp;nbsp;&amp;nbsp; command.COMMAND = CMD8;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; command.ARGUMENT = 0x000001AA;&amp;nbsp;&amp;nbsp; // Voltage supply 2.7-3.6V 0x100 + 0xAA check pattern&lt;BR /&gt;&amp;nbsp;&amp;nbsp; command.BLOCKS = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; val = _esdhc_send_cmd(esdhc_device_ptr, &amp;amp;command);&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;It still doesn't work - CMD8 still shows no clock. However now the CRM bit is set in IRQSTAT. It is interesting that CINS (card inserted bit) in PRSSTAT is low when there is definitely a card inserted.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 05 May 2020 14:50:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Vybrid-Processors/Vybrid-eSDHC-Controller/m-p/1044382#M6023</guid>
      <dc:creator>ogj</dc:creator>
      <dc:date>2020-05-05T14:50:06Z</dc:date>
    </item>
  </channel>
</rss>

