Jump to content

rnightbane

Members
  • Content Count

    9
  • Joined

  • Last visited


Reputation Activity

  1. Like
    rnightbane got a reaction from ausonweng in ADC and USB Data sending to MatLab   
    Okay, so I found out from my previous post that the output value from the ADC can be accessed through pui32ADC0Value...now, im trying to send that data via USB device mode in Tiva, however, my concerns are will my code work? And if it works, how do I access that data via MatLab. Thanks
     
    Once again, credits to the maker of the ADC code.
     
    #include <stdbool.h>
    #include <stdint.h>
    #include "inc/hw_memmap.h"
    #include "driverlib/adc.h"
    #include "driverlib/gpio.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/adc.h"
    #include "inc/hw_types.h"
    #include "driverlib/debug.h"
    #include "driverlib/usb.h"
    #include "usblib/usblib.h"
    #include "usblib/usblibpriv.h"
    #include "usblib/device/usbdevice.h"
    #include "usblib/device/usbdevicepriv.h"
     
    main(void) {
     
    uint32_t pui32ADC0Value[1];
     
    SysCtlClockSet(SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN| SYSCTL_XTAL_16MHZ);                                                                            //Set clock at 40 Mhz , Sometimes                                                                          //ADC may not work at 80Mhz 
    SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
    ADCReferenceSet(ADC0_BASE, ADC_REF_INT); //Set reference to the internal reference
                                            // You can set it to 1V or 3 V
    GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_5); //Configure GPIO as ADC
     
    ADCSequenceDisable(ADC0_BASE, 3); //It is always a good practice to disable ADC prior                                                        //to usage ,else the ADC may not be accurate                                                               //   due to previous initializations                  
    ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_PROCESSOR, 0); //Use the 3rd Sample sequencer                                                                    
     
    ADCSequenceStepConfigure(ADC0_BASE, 3, 0,ADC_CTL_CH8 | ADC_CTL_IE | ADC_CTL_END); 
    //Configure ADC to read from channel 8 ,trigger the interrupt to end data capture //          
     
    ADCSequenceEnable(ADC0_BASE, 3);   //Enable the ADC
    ADCIntClear(ADC0_BASE, 3);     //Clear interrupt to proceed to  data capture
     
    uint8_t* Data = "pui32ADC0Value";
    //
    // Configure Endpoint 1.
    //
    USBDevEndpointConfigSet(USB0_BASE, USB_EP_1, 64, //DISABLE_NAK_LIMIT, 
                            USB_EP_MODE_BULK | USB_EP_DEV_IN);
    //
    // Configure FIFO as a device IN endpoint FIFO starting at address 64
    // and is 64 bytes in size.
    //
    USBFIFOConfigSet(USB0_BASE, USB_EP_1, 64, USB_FIFO_SZ_64, USB_EP_DEV_IN);
     
    while (1) {
    ADCProcessorTrigger(ADC0_BASE, 3);   //Ask processor to trigger ADC
    while (!ADCIntStatus(ADC0_BASE, 3, false))
    { //Do nothing until interrupt is triggered
    }
     
    ADCIntClear(ADC0_BASE, 3); //Clear Interrupt to proceed to next data capture                                          
    ADCSequenceDataGet(ADC0_BASE, 3, pui32ADC0Value); //pui32ADC0Value is the value read                                                                     
     
    SysCtlDelay(SysCtlClockGet() / 12);
     
     //
    // Put the data in the FIFO.
    //
    USBEndpointDataPut(USB0_BASE, USB_EP_1, Data, 64);
    //
    // Start the transmission of data.
    //
    USBEndpointDataSend(USB0_BASE, USB_EP_1, USB_TRANS_IN);
     
    //USBEndpointDataGet(USB0_BASE, USB_EP_1, Data, 32);
    } //Suitable delay
     
    }
×
×
  • Create New...