• Join
  • Sign In with my.TI Login
Texas Instruments
  • Products
  • Applications
  • Tools & Software
  • Support & Community
  • Sample & Buy
  • About TI
Sample & Purchase Cart Sample & Purchase Cart
  • Search
  • Advanced
TI E2E™ Community
  • Support Forums
  • Blogs
  • Groups
  • Videos
  • 简体中文
  • More ...
TI Home » TI E2E Community » Support Forums » Microcontrollers » Stellaris® ARM® Microcontrollers » Stellaris® ARM® LM3S Microcontrollers Forum » Lm3S9B92 EPI in HB8 FIFO Mode, DMA read
Share
Stellaris® ARM® Microcontrollers
  • Forum
Options
  • Subscribe via RSS
Helpful Stellaris® LM4F Series Links
  • LM4F Series
  • Stellaris PinMux Utility
  • Stellaris® LM4F120 LaunchPad
  • LM4F MCU Applications
  • LM4F MCU Video
  • ARM Cortex-M4F Whitepaper
  • Stellaris MCU Brochure
  • LM4F232 Eval Kit
  • Lm3S9B92 EPI in HB8 FIFO Mode, DMA read

    Lm3S9B92 EPI in HB8 FIFO Mode, DMA read

    This question is not answered
    Michael Hamal
    Posted by Michael Hamal
    on Feb 24 2012 03:31 AM
    Prodigy50 points

    Hi all!

    I try to read data from the epi interface via DMA. Writing data to the interface works fine, but reading dosen't.

    I don't get any EPI interrupts and I can't see anything with my oscilloscope on the RDn pin. Here is my configuration:

    Thanks for your help.

    Regards Michael

        //Interrupt Handler//////////////////////////////////////////////////////////////7

        void EpiIntHandler(void)
        {
            uint32_t intStatus = uDMAIntStatus();
            uint32_t channelModeTX = uDMAChannelModeGet(UDMA_SEC_CHANNEL_EPI0TX);
            uint32_t channelModeRX = uDMAChannelModeGet(UDMA_SEC_CHANNEL_EPI0RX);

            if ((intStatus & UDMA_DEF_TMR1B_SEC_EPI0TX) && (channelModeTX == UDMA_MODE_STOP))
            {
            }
            if ((intStatus & UDMA_DEF_TMR1A_SEC_EPI0RX) && (channelModeRX == UDMA_MODE_STOP))
            {
            }
        }


    int main()
    {
        SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);

        initEpi();
        initDma();

        memset(buffer, 0xAA, 256);

        IntMasterEnable();

        while(1)
        {
            read(buffer, 256);

            //write(buffer, 256); //works fine
        }



        return 0;
    }


    void initEpi()
    {
        SysCtlPeripheralEnable(SYSCTL_PERIPH_EPI0);
        SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_EPI0);

        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);

        GPIOPinConfigure(GPIO_PH3_EPI0S0); //D0
        GPIOPinConfigure(GPIO_PH2_EPI0S1); //D1
        GPIOPinConfigure(GPIO_PC4_EPI0S2); //D2
        GPIOPinConfigure(GPIO_PC5_EPI0S3); //D3
        GPIOPinConfigure(GPIO_PC6_EPI0S4); //D4
        GPIOPinConfigure(GPIO_PC7_EPI0S5); //D5
        GPIOPinConfigure(GPIO_PH0_EPI0S6); //D6
        GPIOPinConfigure(GPIO_PH1_EPI0S7); //D7
        GPIOPinConfigure(GPIO_PH6_EPI0S26); //FIFO-Empty
        GPIOPinConfigure(GPIO_PH7_EPI0S27); //FIFO-Full
        GPIOPinConfigure(GPIO_PJ4_EPI0S28); //RDn
        GPIOPinConfigure(GPIO_PJ5_EPI0S29); //WRn

        GPIOPinTypeEPI(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);
        GPIOPinTypeEPI(GPIO_PORTH_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_6 | GPIO_PIN_7);
        GPIOPinTypeEPI(GPIO_PORTJ_BASE, GPIO_PIN_4 | GPIO_PIN_5);

        EPIModeSet(EPI0_BASE, EPI_MODE_HB8);

        EPIConfigHB8Set(EPI0_BASE, EPI_HB8_MODE_FIFO, 0);

        EPIAddressMapSet(EPI0_BASE, EPI_ADDR_PER_BASE_C | EPI_ADDR_PER_SIZE_256B);

        EPIFIFOConfig(EPI0_BASE, EPI_FIFO_CONFIG_TX_EMPTY | EPI_FIFO_CONFIG_RX_1_4);

        EPIDividerSet(EPI0_BASE, 1);

        IntEnable(INT_EPI0);
    }

    void initDma()
    {

        SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
        SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UDMA);

        IntEnable(INT_UDMAERR);
        uDMAEnable();
        IntEnable(INT_UDMA);

        uDMAControlBaseSet(dmaControlTable);

        uDMAChannelSelectSecondary(/*UDMA_DEF_TMR1B_SEC_EPI0TX |*/ UDMA_DEF_TMR1A_SEC_EPI0RX);

        uDMAChannelAttributeDisable(UDMA_SEC_CHANNEL_EPI0TX, UDMA_ATTR_HIGH_PRIORITY | UDMA_ATTR_REQMASK);
        uDMAChannelAttributeDisable(UDMA_SEC_CHANNEL_EPI0RX, UDMA_ATTR_HIGH_PRIORITY | UDMA_ATTR_REQMASK);

        uDMAChannelAttributeEnable(UDMA_SEC_CHANNEL_EPI0TX, UDMA_ATTR_USEBURST);
        uDMAChannelAttributeEnable(UDMA_SEC_CHANNEL_EPI0RX, UDMA_ATTR_USEBURST);

        uDMAChannelControlSet(UDMA_SEC_CHANNEL_EPI0TX | UDMA_PRI_SELECT, UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_NONE | UDMA_ARB_4);
        uDMAChannelControlSet(UDMA_SEC_CHANNEL_EPI0RX | UDMA_PRI_SELECT, UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_8 | UDMA_ARB_4);
    }

    void write(uint8_t* buffer, uint32_t size)
    {
        if (size > 0)
        {
            uDMAChannelTransferSet(UDMA_SEC_CHANNEL_EPI0TX, UDMA_MODE_BASIC, (void*) buffer, (void*) 0xC0000000, size);
            uDMAChannelEnable(UDMA_SEC_CHANNEL_EPI0TX);
        }
    }


    void read(uint8_t* buffer, uint32_t size)
    {
        if (size > 0)
        {
            uDMAChannelTransferSet(UDMA_SEC_CHANNEL_EPI0RX, UDMA_MODE_BASIC, (void*) 0xC0000000, (void*) buffer, size);
            uDMAChannelEnable(UDMA_SEC_CHANNEL_EPI0RX);
        }
    }





    Report Abuse
    • Reply
    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    All Replies
    • Stellaris Mitch
      Posted by Stellaris Mitch
      on Feb 24 2012 14:35 PM
      Intellectual2170 points

      Hello Michael Hamal,

      I don't see anything obviously wrong in your code. Some additional information might help me offer suggestions.

      - What is connected to the EPI?

      - You indicate the RDn pin state is not changing. Is it high or low on the scope?

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Michael Hamal
      Posted by Michael Hamal
      on Feb 27 2012 04:35 AM
      Prodigy50 points

      Hi Mitch,

      thank you for your fast reply. Here is the requested information.

      RDn pin is HIGH, WRn pin is LOW, I pulled both FIFO pins (FEMPTY and FFULL) down to GND. Normally I there is a FPGA connected to the micro via EPI, but for my tests, I use the DK-LM3S9B96 eval board without any device at EPI, except FEMPTY and FFULL as mentioned before.

       

      Regards

      Michael

       

       

      Here is the code withou DMA:

       

      int main()
      {
          SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);

          initEpi();
          initDma();

          memset(buffer, 0xAA, 256);

          IntMasterEnable();

          EPINonBlockingReadConfigure(EPI0_BASE, 1, 4, 0xC0000000);

          while(true)
          {
              //read(buffer, 256);
              EPINonBlockingReadStart(EPI0_BASE, 0, 4);
              uint32_t currentReadSize = EPINonBlockingReadGet8(EPI0_BASE, 4, buffer);

          }

       

          return 0;
      }

       

       

       

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Stellaris Mitch
      Posted by Stellaris Mitch
      on Feb 28 2012 09:53 AM
      Intellectual2170 points

      Hello Michael,

      I took your non-DMA version and adjusted a few things (using a single EPI channel for instance) and took a look with a logic analyzer. It's definitely toggling RDn in this situation. I will also start testing your DMA version and let you know what I see.

      The modified non-DMA code:

        unsigned char g_pucBuffer[1024];

      int
      main(void)
      {
      unsigned long ulReadSize;
      unsigned long ulLoopCount;

      //
      // Set the clocking to run directly from the crystal.
      //
      ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
      SYSCTL_XTAL_16MHZ);

      //
      // Set the device pinout appropriately for this board.
      //
      PinoutSet();

      //
      // Setup the UART0 console.
      // Enable the (non-GPIO) peripherals used by this example. PinoutSet()
      // already enabled GPIO Port A.
      //
      ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);

      GPIOPinConfigure(GPIO_PA0_U0RX);
      GPIOPinConfigure(GPIO_PA1_U0TX);

      GPIOPinTypeUART(GPIO_PORTA_BASE, (GPIO_PIN_0 | GPIO_PIN_1));

      UARTStdioInit(0);

      UARTprintf("\n\nCustomer EPI test\n");

      //
      // Setup EPI pins/etc.
      //
      SysCtlPeripheralEnable(SYSCTL_PERIPH_EPI0);
      SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_EPI0);

      SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
      SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);
      SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);

      GPIOPinConfigure(GPIO_PH3_EPI0S0); //D0
      GPIOPinConfigure(GPIO_PH2_EPI0S1); //D1
      GPIOPinConfigure(GPIO_PC4_EPI0S2); //D2
      GPIOPinConfigure(GPIO_PC5_EPI0S3); //D3
      GPIOPinConfigure(GPIO_PC6_EPI0S4); //D4
      GPIOPinConfigure(GPIO_PC7_EPI0S5); //D5
      GPIOPinConfigure(GPIO_PH0_EPI0S6); //D6
      GPIOPinConfigure(GPIO_PH1_EPI0S7); //D7
      GPIOPinConfigure(GPIO_PH6_EPI0S26); //FIFO-Empty
      GPIOPinConfigure(GPIO_PH7_EPI0S27); //FIFO-Full
      GPIOPinConfigure(GPIO_PJ4_EPI0S28); //RDn
      GPIOPinConfigure(GPIO_PJ5_EPI0S29); //WRn

      GPIOPinTypeEPI(GPIO_PORTC_BASE, (GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 |
      GPIO_PIN_7));
      GPIOPinTypeEPI(GPIO_PORTH_BASE, (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 |
      GPIO_PIN_3 | GPIO_PIN_6 | GPIO_PIN_7));
      GPIOPinTypeEPI(GPIO_PORTJ_BASE, (GPIO_PIN_4 | GPIO_PIN_5));

      EPIModeSet(EPI0_BASE, EPI_MODE_HB8);

      EPIConfigHB8Set(EPI0_BASE, EPI_HB8_MODE_FIFO, 0);

      EPIAddressMapSet(EPI0_BASE,
      (EPI_ADDR_PER_BASE_C | EPI_ADDR_PER_SIZE_256B));

      EPIFIFOConfig(EPI0_BASE,
      (EPI_FIFO_CONFIG_TX_EMPTY | EPI_FIFO_CONFIG_RX_1_4));

      EPIDividerSet(EPI0_BASE, 1);

      //
      // Setup and start EPI non-blocking reads.
      //
      EPINonBlockingReadConfigure(EPI0_BASE, 0, EPI_NBCONFIG_SIZE_8, 0x00000000);
      EPINonBlockingReadStart(EPI0_BASE, 0, 1024);

      ulReadSize = 0;
      ulLoopCount = 0;
      while(ulReadSize < 1024)
      {
      if((EPINonBlockingReadAvail(EPI0_BASE)) > 0)
      {
      ulReadSize += EPINonBlockingReadGet8(EPI0_BASE, 1024, g_pucBuffer);
      ulLoopCount++;
      }
      }

      //
      // Output some info and notify done.
      //
      UARTprintf(" Read %d in %d ReadGet8 calls\n", ulReadSize, ulLoopCount);
      UARTprintf("....done\n");

      //
      // Spin.
      //
      while(1)
      {
      }

      }
      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Michael Hamal
      Posted by Michael Hamal
      on Mar 07 2012 00:30 AM
      Prodigy50 points

      Hello Mitch,

      did you find out something new to the subject EPI DMA read in HB8 FIFO mode?

      Regards Michael

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Stellaris Mitch
      Posted by Stellaris Mitch
      on Mar 08 2012 09:05 AM
      Intellectual2170 points

      Hi Michael,

      Sorry for the delayed response. It appears that unlike the TX side, you need to trigger the EPI read to start the FIFO fill. The DMA can then pull it from the FIFO into a buffer. I do see the RDn toggle as expected in the analyzer. To confirm, I tied DS0 to 3.3V to signal a 1 for the reads. As I would expect, the buffer fills with values of 0x01.

      I made some minor changes to your code to use for testing (read(), clearing DMA IRQ, vars for info tracking). You can find it below.

      void EPIIntHandler(void)
      {
      uint32_t intStatus;
      uint32_t channelModeTX;
      uint32_t channelModeRX;

      //
      // Handle any EPI error IRQ signals.
      //
      intStatus = EPIIntErrorStatus(EPI0_BASE);
      if(intStatus)
      {
      g_ui32EPIErrors++;
      }
      EPIIntErrorClear(EPI0_BASE, intStatus);
      intStatus = EPIIntStatus(EPI0_BASE, false);

      if(intStatus)
      {
      g_ui32EPIStatus = intStatus;
      }

      //
      // Get any DMA related information. Clear the IRQ.
      //
      intStatus = uDMAIntStatus();
      uDMAIntClear(intStatus);

      channelModeTX = uDMAChannelModeGet(UDMA_SEC_CHANNEL_EPI0TX);
      channelModeRX = uDMAChannelModeGet(UDMA_SEC_CHANNEL_EPI0RX);

      if((intStatus & UDMA_DEF_TMR1B_SEC_EPI0TX) &&
      (channelModeTX == UDMA_MODE_STOP))
      {
      }
      if((intStatus & UDMA_DEF_TMR1A_SEC_EPI0RX) &&
      (channelModeRX == UDMA_MODE_STOP))
      {
      g_ui32RxCount++;
      }
      }

      void DMAErrHandler(void)
      {
      uint32_t ui32Status;

      ui32Status = uDMAErrorStatusGet();

      if(ui32Status)
      {
      uDMAErrorStatusClear();
      g_ui32DMAErrCount++;
      }

      }

      void initEpi(void)
      {
      SysCtlPeripheralEnable(SYSCTL_PERIPH_EPI0);
      SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_EPI0);

      SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
      SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);
      SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);

      GPIOPinConfigure(GPIO_PH3_EPI0S0); //D0
      GPIOPinConfigure(GPIO_PH2_EPI0S1); //D1
      GPIOPinConfigure(GPIO_PC4_EPI0S2); //D2
      GPIOPinConfigure(GPIO_PC5_EPI0S3); //D3
      GPIOPinConfigure(GPIO_PC6_EPI0S4); //D4
      GPIOPinConfigure(GPIO_PC7_EPI0S5); //D5
      GPIOPinConfigure(GPIO_PH0_EPI0S6); //D6
      GPIOPinConfigure(GPIO_PH1_EPI0S7); //D7
      GPIOPinConfigure(GPIO_PH6_EPI0S26); //FIFO-Empty
      GPIOPinConfigure(GPIO_PH7_EPI0S27); //FIFO-Full
      GPIOPinConfigure(GPIO_PJ4_EPI0S28); //RDn
      GPIOPinConfigure(GPIO_PJ5_EPI0S29); //WRn

      GPIOPinTypeEPI(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 |
      GPIO_PIN_7);
      GPIOPinTypeEPI(GPIO_PORTH_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 |
      GPIO_PIN_3 | GPIO_PIN_6 | GPIO_PIN_7);
      GPIOPinTypeEPI(GPIO_PORTJ_BASE, GPIO_PIN_4 | GPIO_PIN_5);

      EPIModeSet(EPI0_BASE, EPI_MODE_HB8);

      EPIConfigHB8Set(EPI0_BASE, EPI_HB8_MODE_FIFO, 0);

      EPIAddressMapSet(EPI0_BASE, EPI_ADDR_PER_BASE_C | EPI_ADDR_PER_SIZE_256B);

      EPIFIFOConfig(EPI0_BASE, (EPI_FIFO_CONFIG_TX_EMPTY |
      EPI_FIFO_CONFIG_RX_1_4 |
      EPI_FIFO_CONFIG_RSTALLERR));

      EPIDividerSet(EPI0_BASE, 1);

      IntEnable(INT_EPI0);
      }

      void initDma(void)
      {

      SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);
      SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UDMA);

      uDMAEnable();
      uDMAIntClear(uDMAIntStatus());
      IntEnable(INT_UDMA);
      IntEnable(INT_UDMAERR);

      uDMAControlBaseSet(dmaControlTable);

      uDMAChannelSelectSecondary(UDMA_DEF_TMR1B_SEC_EPI0TX |
      UDMA_DEF_TMR1A_SEC_EPI0RX);

      uDMAChannelAttributeDisable(UDMA_SEC_CHANNEL_EPI0TX,
      (UDMA_ATTR_HIGH_PRIORITY | UDMA_ATTR_REQMASK));
      uDMAChannelAttributeDisable(UDMA_SEC_CHANNEL_EPI0RX,
      (UDMA_ATTR_HIGH_PRIORITY | UDMA_ATTR_REQMASK));

      uDMAChannelAttributeEnable(UDMA_SEC_CHANNEL_EPI0TX, UDMA_ATTR_USEBURST);
      uDMAChannelAttributeEnable(UDMA_SEC_CHANNEL_EPI0RX, UDMA_ATTR_USEBURST);

      uDMAChannelControlSet((UDMA_SEC_CHANNEL_EPI0TX | UDMA_PRI_SELECT),
      (UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_NONE |
      UDMA_ARB_4));
      uDMAChannelControlSet((UDMA_SEC_CHANNEL_EPI0RX | UDMA_PRI_SELECT),
      (UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_8 |
      UDMA_ARB_4));
      }

      void write(uint8_t* buffer, uint32_t size)
      {
      if(size > 0)
      {
      uDMAChannelTransferSet(UDMA_SEC_CHANNEL_EPI0TX, UDMA_MODE_BASIC,
      (void*) buffer, (void*) 0xC0000000, size);
      uDMAChannelEnable(UDMA_SEC_CHANNEL_EPI0TX);
      }
      }

      void read(uint8_t* buffer, uint32_t size)
      {
      if(size > 0)
      {
      uDMAChannelTransferSet(UDMA_SEC_CHANNEL_EPI0RX, UDMA_MODE_BASIC,
      (void*)0xC0000000, (void*) buffer, size);
      EPINonBlockingReadConfigure(EPI0_BASE, 0, EPI_NBCONFIG_SIZE_8, 0x00000000);
      EPINonBlockingReadStart(EPI0_BASE, 0, size);
      uDMAChannelEnable(UDMA_SEC_CHANNEL_EPI0RX);
      }
      }

      int main()
      {
      uint32_t ui32Loop, ui32TempRxCount;

      //
      // Setup clocks
      //
      ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
      SYSCTL_XTAL_16MHZ);

      //
      // Set the device pinout appropriately for this board.
      //
      PinoutSet();

      //
      // Setup the UART0 console.
      // Enable the (non-GPIO) peripherals used by this example. PinoutSet()
      // already enabled GPIO Port A.
      //
      ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);

      GPIOPinConfigure(GPIO_PA0_U0RX);
      GPIOPinConfigure(GPIO_PA1_U0TX);

      GPIOPinTypeUART(GPIO_PORTA_BASE, (GPIO_PIN_0 | GPIO_PIN_1));

      UARTStdioInit(0);

      UARTprintf("\n\nCustomer uDMA EPI test\n");

      //
      // Initialize RX DMA count and error count.
      //
      g_ui32RxCount = 0;
      g_ui32DMAErrCount = 0;

      //
      // Set the buffer to known values.
      //
      UARTprintf("Initializing read buffer\n");
      for(ui32Loop = 0; ui32Loop < 256; ui32Loop++)
      {
      g_pui8Buffer[ui32Loop] = 0xaa;
      }

      //
      // Initialize EPI & uDMA
      //
      UARTprintf("Initializing DMA\n");
      initDma();
      UARTprintf("Initializing EPI\n");
      initEpi();

      UARTprintf("Enabling master interrupt\n");
      IntMasterEnable();
      UARTprintf("Starting transfer loop\n");
      ui32Loop = 0;
      while(1)
      {
      ui32TempRxCount = g_ui32RxCount;
      read(g_pui8Buffer, 256);

      //
      // Wait for the DMA to complete
      //
      while(g_ui32RxCount <= ui32TempRxCount)
      {
      if(g_ui32DMAErrCount)
      {
      UARTprintf("DMA error count = %d\n", g_ui32DMAErrCount);
      }
      if(g_ui32EPIErrors)
      {
      UARTprintf("EPI error count = %d\n", g_ui32EPIErrors);
      }
      }

      ui32Loop++;
      //write(buffer, 256); //works fine

      //
      // Arbitrary count selected. Halt the loop and output some data.
      //
      if(ui32Loop > 2000)
      {
      UARTprintf("Halting loop.\n");
      UARTprintf("DMA RX transfer count = %d\n", g_ui32RxCount);
      UARTprintf("buffer contents: \n0000:");
      for(ui32Loop = 1; ui32Loop <= 256; ui32Loop++)
      {
      UARTprintf("0x%02x ", g_pui8Buffer[ui32Loop-1]);
      if(!(ui32Loop % 12))
      {
      UARTprintf("\n%04d:", (ui32Loop - 1));
      }
      }

      //
      // Spin.
      //
      while(1)
      {
      }
      }
      }
      }
      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    • Michael Hamal
      Posted by Michael Hamal
      on Mar 13 2012 05:10 AM
      Prodigy50 points

      Hello Mitch,

      Thank you for your help, I can now read from EPI with DMA. Thank you again for the very good support!

      Regads

      Michael

      Report Abuse
      • Reply
      You have posted to a forum that requires a moderator to approve posts before they are publicly available.
    TI E2E™ Community
    • Support Forums
    • Blogs
    • Videos
    • Groups
    • Site Support & Feedback
    • Settings
    TI E2E™ Community Groups
    • TI University Program
    • Make the Switch
    • Microcontroller Projects
    • Motor Drive & Control
    Other Communities
    • Deyisupport
    • Designsomething.org
    • beagleboard.org
    • TI on Element 14
    • TI on TechXchangeSM
    Other Technical & Support Resources
    • WEBENCH® Design Center
    • Product Information Centers
    • Technical Documents
    • TI Design Network
    • TI Technical Articles
    • TI Training

    All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.

    Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI, its suppliers and providers of content reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.

    Follow Us Texas Instruments on Facebook Texas Instruments on Twitter Texas Instruments on LinkedIn Texas Instruments on Google+
    TI Worldwide | Contact Us | my.TI Login | Site Map | Corporate Citizenship | mobile m.ti.com (Mobile Version)

    TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs and
    embedded processors, along with software, tools and the industry’s largest sales/support staff.

    © Copyright 1995-2013 Texas Instruments Incorporated. All rights reserved.
    Trademarks | Privacy Policy | Terms of Use