I2C/SPI/GPIO example for MAX32625PICO board
Dependencies: SerialInterface USBDevice max32625pico
Fork of PICO_USB_I2C_SPI by
main.cpp
- Committer:
- switches
- Date:
- 2016-12-15
- Revision:
- 10:a3f06fa13bda
- Parent:
- 9:e59eb5f5ce32
- Child:
- 11:b9d7ab7626b5
File content as of revision 10:a3f06fa13bda:
#include "mbed.h" #include "max32630fthr.h" #include "USBSerial.h" #include "SerialInterface.h" #define UART_MAX_RESP_LENGTH 255 #define UART_MAX_CMD_LENGTH 255 #define USB_MAX_RESP_LENGTH 255 #define USB_MAX_CMD_LENGTH 255 MAX32630FTHR pegasus; // Virtual serial port over USB USBSerial microUSB; // Hardware serial port over DAPLink Serial daplink(P2_1, P2_0); // Serial Interfaces I2C i2c(P3_4, P3_5); SPI spi(P5_1, P5_2, P5_0); DigitalInOut gpio[] = {P5_3, P5_4, P5_5, P5_6, P3_0, P3_1, P3_2, P3_3}; AnalogIn ain[] = {AIN_0, AIN_1, AIN_2, AIN_3, AIN_4, AIN_5, AIN_6, AIN_7}; // Serial Interface Adapter SerialInterface serInt(i2c, spi, gpio, ain); // Threads Thread threadUSB; Thread threadUART; DigitalOut rLED(LED1); DigitalOut gLED(LED2); DigitalOut bLED(LED3); void usb_thread() { char obuf[USB_MAX_RESP_LENGTH+1]; char ibuf[USB_MAX_CMD_LENGTH+1]; int i = 0; microUSB.printf("micro USB serial port\r\n"); while(1) { if (microUSB.readable()) { ibuf[i]=microUSB.getc(); if (ibuf[i]!='\r') { if (i < USB_MAX_CMD_LENGTH) { i += 1; } } else { rLED = LED_ON; if (i < USB_MAX_CMD_LENGTH) { ibuf[i]=0; // microUSB.printf("UART CMD: %s=", ibuf); serInt.call(ibuf, obuf); microUSB.printf("%s\r\n", obuf); } else { microUSB.printf("[-1]\r\n"); } i=0; rLED = LED_OFF; } } } } void uart_thread() { char obuf[UART_MAX_RESP_LENGTH+1]; char ibuf[UART_MAX_CMD_LENGTH+1]; int i = 0; daplink.printf("daplink serial port\r\n"); while(1) { if (daplink.readable()) { ibuf[i]=daplink.getc(); if (ibuf[i]!='\r') { if (i < UART_MAX_CMD_LENGTH) { i += 1; } } else { bLED = LED_ON; if (i < UART_MAX_CMD_LENGTH) { ibuf[i]=0; // daplink.printf("UART CMD: %s=", ibuf); serInt.call(ibuf, obuf); daplink.printf("%s\r\n", obuf); } else { daplink.printf("[-1]\r\n"); } i=0; bLED = LED_OFF; } } } } // main() runs in its own thread in the OS // (note the calls to Thread::wait below for delays) int main() { rLED = LED_ON; gLED = LED_ON; bLED = LED_OFF; // Board Initialization pegasus.init(MAX32630FTHR::VIO_3V3); // Initialize primary SPI CS gpio[0].write(1); gpio[0].output(); rLED = LED_OFF; // Start USB serial thread threadUSB.start(usb_thread); // Start UART serial thread threadUART.start(uart_thread); // Start main loop while(1) { Thread::wait(500); gLED = !gLED; } }