L VD / Mbed OS MAX11300_test

Dependencies:   MAX11300

Committer:
elelthvd
Date:
Thu Aug 13 15:57:28 2020 +0800
Revision:
0:832808d6b029
Add test software for MAX11300 library, with example configuration.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elelthvd 0:832808d6b029 1 #include "mbed.h"
elelthvd 0:832808d6b029 2 #include "MAX11300.h"
elelthvd 0:832808d6b029 3 #include "MAX11300Hex.h" // Contains PIXI configuration: port0 ADC, port1 DAC
elelthvd 0:832808d6b029 4
elelthvd 0:832808d6b029 5 #define D_TX USBTX
elelthvd 0:832808d6b029 6 #define D_RX USBRX
elelthvd 0:832808d6b029 7 // Create a BufferedSerial object to be used by the system I/O retarget code.
elelthvd 0:832808d6b029 8 static BufferedSerial pc(D_TX, D_RX, 115200);
elelthvd 0:832808d6b029 9 // static BufferedSerial pc(D_TX, D_RX, 115200);
elelthvd 0:832808d6b029 10 // Specify a custom FileHandle for the console.
elelthvd 0:832808d6b029 11 FileHandle * mbed::mbed_override_console(int fd) {
elelthvd 0:832808d6b029 12 return &pc;
elelthvd 0:832808d6b029 13 }
elelthvd 0:832808d6b029 14 DigitalOut myled(LED1);
elelthvd 0:832808d6b029 15
elelthvd 0:832808d6b029 16 // SPI for DISCO_F746NG board w/Mikro Adruino Click Shield
elelthvd 0:832808d6b029 17 SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK);
elelthvd 0:832808d6b029 18 // SPI for DISCO_F746NG board w/Mikro Adruino Click Shield
elelthvd 0:832808d6b029 19 // #define D_CS D9 // PWM_OUT // MikroBUS 2
elelthvd 0:832808d6b029 20 // #define D_INTR D3 // PB_4 // MikroBUS 2
elelthvd 0:832808d6b029 21 // #define D_RST A2 // PF_9 // MikroBUS 2
elelthvd 0:832808d6b029 22 #define D_CS D10 // SPI_CS // MikroBUS 1
elelthvd 0:832808d6b029 23 #define D_INTR D2 // PG_6 // MikroBUS 1
elelthvd 0:832808d6b029 24 #define D_RST A3 // PF_8 // MikroBUS 1
elelthvd 0:832808d6b029 25
elelthvd 0:832808d6b029 26 // main() runs in its own thread in the OS
elelthvd 0:832808d6b029 27 int main()
elelthvd 0:832808d6b029 28 {
elelthvd 0:832808d6b029 29 printf("MAX11300 Test...\r\n");
elelthvd 0:832808d6b029 30 uint16_t adcvalue = 0; // 12-bit
elelthvd 0:832808d6b029 31 float f_adcvalue = 0;
elelthvd 0:832808d6b029 32 uint16_t dacvalue = 0xFFF; // 12-bit
elelthvd 0:832808d6b029 33 float f_dacvalue = 0;
elelthvd 0:832808d6b029 34
elelthvd 0:832808d6b029 35 uint8_t step = 0;
elelthvd 0:832808d6b029 36
elelthvd 0:832808d6b029 37 for(int i=0;i<100;i++) {
elelthvd 0:832808d6b029 38 myled = !myled;thread_sleep_for(10);
elelthvd 0:832808d6b029 39 }
elelthvd 0:832808d6b029 40 MAX11300 mikroe_pixi_click(spi, D_CS, D_INTR, NC);
elelthvd 0:832808d6b029 41 MAX11300::CmdResult pixi_result;
elelthvd 0:832808d6b029 42 myled = !myled;thread_sleep_for(1000);myled = !myled;
elelthvd 0:832808d6b029 43
elelthvd 0:832808d6b029 44 while (1) {
elelthvd 0:832808d6b029 45 f_dacvalue = 10.0*(step/10.0)-5.0; // Walk -5..5V in 10 steps.
elelthvd 0:832808d6b029 46 dacvalue = static_cast<uint16_t>( 4095 * ((f_dacvalue+5)/10.0) );// 12-bit over range 0.0-2.5 volts
elelthvd 0:832808d6b029 47
elelthvd 0:832808d6b029 48 pixi_result = mikroe_pixi_click.single_ended_dac_write(MAX11300::PORT1, dacvalue);
elelthvd 0:832808d6b029 49 if(pixi_result != MAX11300::Success)
elelthvd 0:832808d6b029 50 printf("Failure in single_ended_dac_write\r\n");
elelthvd 0:832808d6b029 51
elelthvd 0:832808d6b029 52 thread_sleep_for(1*1);
elelthvd 0:832808d6b029 53
elelthvd 0:832808d6b029 54 mikroe_pixi_click.single_ended_adc_read(MAX11300::PORT0, (uint16_t &) adcvalue);
elelthvd 0:832808d6b029 55 if(pixi_result != MAX11300::Success)
elelthvd 0:832808d6b029 56 printf("Failure in single_ended_adc_read\r\n");
elelthvd 0:832808d6b029 57
elelthvd 0:832808d6b029 58 f_adcvalue = (adcvalue * 10.0) / 4095 - 5.0; // ADC voltage range -5...5V
elelthvd 0:832808d6b029 59 f_dacvalue = (dacvalue * 10.0) / 4095 - 5.0;
elelthvd 0:832808d6b029 60
elelthvd 0:832808d6b029 61 printf("%d: dac:%04X (%+f), adc:%04X (%+f), err:(%+f)\r\n", step, dacvalue, f_dacvalue, adcvalue, f_adcvalue, f_adcvalue-f_dacvalue);
elelthvd 0:832808d6b029 62
elelthvd 0:832808d6b029 63 myled = !myled; // Does not work because SPI classes are loaded??
elelthvd 0:832808d6b029 64 thread_sleep_for(1*1);
elelthvd 0:832808d6b029 65
elelthvd 0:832808d6b029 66 step++;
elelthvd 0:832808d6b029 67 if (step >= 10) step = 0;
elelthvd 0:832808d6b029 68 }
elelthvd 0:832808d6b029 69 }
elelthvd 0:832808d6b029 70