rnightbane 0 Posted February 12, 2014 Share Posted February 12, 2014 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 } ausonweng 1 Quote Link to post Share on other sites
robin0338 0 Posted February 14, 2014 Share Posted February 14, 2014 why you don't use CDC communicate with PC,them you could get return data from rs232 protocol. Quote Link to post Share on other sites
rnightbane 0 Posted February 14, 2014 Author Share Posted February 14, 2014 is that some standalone program? Quote Link to post Share on other sites
igor 163 Posted February 14, 2014 Share Posted February 14, 2014 why you don't use CDC communicate with PC,them you could get return data from rs232 protocol. They probably meant using USB CDC (Communications Device Class), which creates a virtual serial port running across the USB connection. You can use the debug port on the launchpad (which provides a virtual serial port connected to UART0 on the launchpad processor). Or you could use the launchpad processors USB port and build your own USB CDC driver. In either case it would look like a serial port from the point of view of your host operating system. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.