A collection of Analog Devices drivers for the mbed platform
For additional information check out the mbed page of the Analog Devices wiki: https://wiki.analog.com/resources/tools-software/mbed-drivers-all
Revision 7:b62398a1d17a, committed 2016-04-20
- Comitter:
- Adrian Suciu
- Date:
- Wed Apr 20 16:35:44 2016 +0300
- Parent:
- 6:74651acebcc7
- Child:
- 8:6e96c6b3c83f
- Commit message:
- Added drvdiag tool
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/drvdiag/Makefile Wed Apr 20 16:35:44 2016 +0300 @@ -0,0 +1,91 @@ +# This file was automagically generated by mbed.org. For more information, +# see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded + +GCC_BIN = +PROJECT = drvdiag +ADI_LIBRARIES_PATH = ../../libraries +MBED_LIBRARIES_PATH = ../../mbed +DRIVER_WRAPPER_PATH = ./driver_wrapper +OBJECTS = ./main.o $(DRIVER_WRAPPER_PATH)/cn0357_diag.o $(DRIVER_WRAPPER_PATH)/ad7790_diag.o $(DRIVER_WRAPPER_PATH)/ad5270_diag.o $(ADI_LIBRARIES_PATH)/AD7790/AD7790.o $(ADI_LIBRARIES_PATH)//AD5270/AD5270.o $(ADI_LIBRARIES_PATH)//cn0357/cn0357.o +SYS_OBJECTS = $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_flash_ramfunc.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/board.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/cmsis_nvic.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/hal_tick.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/mbed_overrides.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/retarget.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/startup_stm32f411xe.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_adc.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_adc_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_can.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_cec.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_cortex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_crc.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_cryp.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_cryp_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_dac.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_dac_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_dcmi.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_dcmi_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_dma.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_dma2d.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_dma_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_dsi.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_eth.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_flash.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_flash_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_fmpi2c_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_fmpi2c.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_msp_template.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_gpio.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_hash.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_hash_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_hcd.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_i2c.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_i2c_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_i2s.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_i2s_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_irda.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_iwdg.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_lptim.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_ltdc.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_ltdc_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_smartcard.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_nand.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_nor.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_pccard.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_pcd.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_pcd_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_pwr.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_pwr_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_qspi.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_rcc.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_rcc_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_rng.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_rtc.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_rtc_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_sai.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_sai_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_sd.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_sdram.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_spdifrx.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_spi.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_sram.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_tim.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_tim_ex.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_uart.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_usart.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_hal_wwdg.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_ll_fmc.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_ll_fsmc.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_ll_sdmmc.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/stm32f4xx_ll_usb.o $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/system_stm32f4xx.o +INCLUDE_PATHS = -I. -I$(MBED_LIBRARIES_PATH) -I$(ADI_LIBRARIES_PATH) -I$(ADI_LIBRARIES_PATH)/ad5270 -I$(ADI_LIBRARIES_PATH)/ad7790 -I$(ADI_LIBRARIES_PATH)/cn0357 -I$(DRIVER_WRAPPER_PATH) -I$(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE -I$(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TARGET_STM -I$(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TARGET_STM/TARGET_STM32F4 -I$(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F411RE -I$(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM +LIBRARY_PATHS = -L$(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM +LIBRARIES = -lmbed +LINKER_SCRIPT = $(MBED_LIBRARIES_PATH)/TARGET_NUCLEO_F411RE/TOOLCHAIN_GCC_ARM/STM32F411XE.ld + +############################################################################### +AS = $(GCC_BIN)arm-none-eabi-as +CC = $(GCC_BIN)arm-none-eabi-gcc +CPP = $(GCC_BIN)arm-none-eabi-g++ +LD = $(GCC_BIN)arm-none-eabi-gcc +OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy +OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump +SIZE = $(GCC_BIN)arm-none-eabi-size + +ifeq ($(HARDFP),1) + FLOAT_ABI = hard +else + FLOAT_ABI = softfp +endif + + +CPU = -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=$(FLOAT_ABI) +CC_FLAGS = $(CPU) -c -g -fno-common -fmessage-length=0 -Wall -Wextra -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer -MMD -MP +CC_SYMBOLS = -DTARGET_RTOS_M4_M7 -DTARGET_FF_ARDUINO -DTOOLCHAIN_GCC_ARM -DTARGET_NUCLEO_F411RE -D__CORTEX_M4 -DTARGET_LIKE_MBED -DTARGET_CORTEX_M -D__FPU_PRESENT=1 -DTARGET_LIKE_CORTEX_M4 -DMBED_BUILD_TIMESTAMP=1458639619.11 -DTARGET_M4 -D__MBED__=1 -DTARGET_STM -DTARGET_STM32F4 -DTARGET_FF_MORPHO -DTOOLCHAIN_GCC -DTARGET_STM32F411RE -DARM_MATH_CM4 + +LD_FLAGS = $(CPU) -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main -Wl,-Map=$(PROJECT).map,--cref +LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys + + +ifeq ($(DEBUG), 1) + CC_FLAGS += -DDEBUG -O0 +else + CC_FLAGS += -DNDEBUG -Os +endif + +.PHONY: all clean lst size + +all: $(PROJECT).bin $(PROJECT).hex size + + +clean: + rm -f $(PROJECT).bin $(PROJECT).elf $(PROJECT).hex $(PROJECT).map $(PROJECT).lst $(OBJECTS) $(DEPS) + + +.asm.o: + $(CC) $(CPU) -c -x assembler-with-cpp -o $@ $< +.s.o: + $(CC) $(CPU) -c -x assembler-with-cpp -o $@ $< +.S.o: + $(CC) $(CPU) -c -x assembler-with-cpp -o $@ $< + +.c.o: + $(CC) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99 $(INCLUDE_PATHS) -o $@ $< + +.cpp.o: + $(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++11 -fno-rtti $(INCLUDE_PATHS) -o $@ $< + + + +$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS) + $(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS) + + +$(PROJECT).bin: $(PROJECT).elf + $(OBJCOPY) -O binary $< $@ + +$(PROJECT).hex: $(PROJECT).elf + @$(OBJCOPY) -O ihex $< $@ + +$(PROJECT).lst: $(PROJECT).elf + @$(OBJDUMP) -Sdh $< > $@ + +lst: $(PROJECT).lst + +size: $(PROJECT).elf + $(SIZE) $(PROJECT).elf + +DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d) +-include $(DEPS) + + \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/drvdiag/config.h Wed Apr 20 16:35:44 2016 +0300 @@ -0,0 +1,47 @@ + +#define AD7790_PRESENT +#define AD5270_PRESENT +#define CN0357_PRESENT +#define SPI_LOW_LEVEL + +#ifdef AD7790_PRESENT +#include "AD7790.h" +#include "ad7790_diag.h" +#endif + +#ifdef AD5270_PRESENT +#include "ad5270.h" +#include "ad5270_diag.h" +#endif + +#ifdef CN0357_PRESENT +#include "cn0357.h" +#include "CN0357_Diag.h" +#endif + +using namespace std; +//------------------------------------ +// Hyperterminal configuration +// 9600 bauds, 8-bit data, no parity +//------------------------------------ + +#ifdef SPI_LOW_LEVEL +DigitalOut CSA_pin(D8); // cs adc +DigitalOut CSR_pin(D6); // cs rdac +SPI spibus(SPI_MOSI, SPI_MISO, SPI_SCK); +#endif + +#ifdef AD7790_PRESENT +AD7790 ad7790(1.2, D8); +AD7790_Diag ad7790diag(ad7790); +#endif + +#ifdef AD5270_PRESENT +AD5270 ad5270(D6, 20000); +AD5270_Diag ad5270diag(ad5270); +#endif + +#ifdef CN0357_PRESENT +CN0357 cn0357; +CN0357_Diag cn0357diag(cn0357); +#endif \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/drvdiag/driver_wrapper/ad5270_diag.cpp Wed Apr 20 16:35:44 2016 +0300
@@ -0,0 +1,96 @@
+#include "mbed.h"
+#include <stdio.h>
+#include <vector>
+#include <string>
+#include "AD5270_Diag.h"
+
+extern Serial pc;
+extern vector<string> cmdbuffer;
+
+AD5270_Diag::AD5270_Diag(AD5270& ad) : dut(ad)
+{
+
+}
+void AD5270_Diag::enable_50TP_programming()
+{
+ dut.enable_50TP_programming();
+ pc.printf("Enabled 50TP prog");
+
+}
+void AD5270_Diag::store_50TP()
+{
+ dut.store_50TP();
+ pc.printf("50TP stored");
+}
+void AD5270_Diag::disable_50TP_programming()
+{
+ dut.disable_50TP_programming();
+ pc.printf("Disabled 50TP prog");
+}
+
+void AD5270_Diag::write_RDAC()
+{
+ float res = strtof(cmdbuffer[1].c_str(), NULL);
+ dut.write_RDAC(res);
+ pc.printf("Wrote %f", res);
+}
+void AD5270_Diag::read_RDAC()
+{
+ pc.printf("Read %f", dut.read_RDAC());
+}
+void AD5270_Diag::write_cmd()
+{
+ uint8_t reg = strtol(cmdbuffer[1].c_str(), NULL, 16);
+ uint8_t regVal = strtol(cmdbuffer[2].c_str(), NULL, 16);
+ pc.printf("Returned %x: ", dut.write_cmd(reg, regVal));
+}
+
+void AD5270_Diag::set_HiZ()
+{
+ pc.printf("SDO set to HiZ");
+ dut.set_SDO_HiZ();
+}
+
+void AD5270_Diag::read_50TP_last_address(void)
+{
+ pc.printf("Returned %x:", dut.read_50TP_last_address());
+}
+void AD5270_Diag::read_50TP_memory(void)
+{
+ uint8_t reg = strtol(cmdbuffer[1].c_str(), NULL, 16);
+ pc.printf("Returned %x", dut.read_50TP_memory(reg));
+}
+
+void AD5270_Diag::write_ctrl_reg(void)
+{
+ uint8_t val = strtol(cmdbuffer[1].c_str(), NULL, 16);
+ dut.write_ctrl_reg(val);
+ pc.printf("Wrote %x to ctrl_reg", val );
+}
+void AD5270_Diag::read_ctrl_reg(void)
+{
+ pc.printf("Read %x from ctrl_reg", dut.read_ctrl_reg());
+}
+
+void AD5270_Diag::reset_RDAC(void)
+{
+ dut.reset_RDAC();
+ pc.printf("Resetted rdac");
+}
+void AD5270_Diag::change_mode(void)
+{
+ uint8_t val = strtol(cmdbuffer[1].c_str(), NULL, 16);
+ dut.change_mode(static_cast<AD5270::AD5270Modes_t>(val));
+ pc.printf("Changed mode to %x", val);
+}
+
+void AD5270_Diag::write_wiper_reg(void)
+{
+ uint16_t val = strtol(cmdbuffer[1].c_str(), NULL, 16);
+ dut.write_wiper_reg(val);
+ pc.printf("Wrote %x to wiper", val);
+}
+void AD5270_Diag::read_wiper_reg(void)
+{
+ pc.printf("Read %x from wiper", dut.read_wiper_reg());
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/drvdiag/driver_wrapper/ad5270_diag.h Wed Apr 20 16:35:44 2016 +0300
@@ -0,0 +1,36 @@
+
+#ifndef AD5270_DIAG_H_
+#define AD5270_DIAG_H_
+#include "ad5270.h"
+
+class AD5270_Diag
+{
+public:
+ AD5270_Diag(AD5270& ad);
+ void enable_50TP_programming(void);
+ void store_50TP(void);
+ void disable_50TP_programming(void);
+
+ void write_RDAC(void);
+ void read_RDAC(void);
+ void write_cmd(void);
+ void set_HiZ(void);
+
+ void read_50TP_last_address(void);
+ void read_50TP_memory(void);
+
+ void write_ctrl_reg(void);
+ void read_ctrl_reg(void);
+
+ void reset_RDAC(void);
+ void change_mode(void);
+
+ void write_wiper_reg(void);
+ void read_wiper_reg(void);
+
+private:
+ AD5270& dut;
+};
+
+
+#endif /* AD5270_DIAG_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/drvdiag/driver_wrapper/ad7790_diag.cpp Wed Apr 20 16:35:44 2016 +0300
@@ -0,0 +1,82 @@
+#include "mbed.h"
+#include <stdio.h>
+#include <vector>
+#include <string>
+#include "AD7790_Diag.h"
+
+extern Serial pc;
+extern vector<string> cmdbuffer;
+
+AD7790_Diag::AD7790_Diag(AD7790& ad) : dut(ad)
+{
+
+}
+
+void AD7790_Diag::init()
+{
+
+}
+void AD7790_Diag::reset()
+{
+ dut.reset();
+ pc.printf("Reseted AD7790");
+}
+
+void AD7790_Diag::write_mode()
+{
+ uint8_t regVal = strtol(cmdbuffer[1].c_str(), NULL, 16);
+ dut.write_mode_reg(regVal);
+ pc.printf("Wrote mode");
+}
+void AD7790_Diag::read_mode()
+{
+ pc.printf("Mode reg: %x ", dut.read_mode_reg());
+}
+
+void AD7790_Diag::write_filter()
+{
+ uint8_t regVal = strtol(cmdbuffer[1].c_str(), NULL, 16);
+ dut.write_filter_reg(regVal);
+ pc.printf("Wrote filter");
+}
+void AD7790_Diag::read_filter()
+{
+ pc.printf("Returned: %x ", dut.read_filter_reg());
+}
+void AD7790_Diag::read_data()
+{
+ pc.printf("Data reg: %x ", dut.read_data_reg());
+}
+
+void AD7790_Diag::read_status()
+{
+ pc.printf("Status reg: %x ", dut.read_status_reg());
+}
+
+void AD7790_Diag::read_u16()
+{
+ pc.printf("Data reg: %x ", dut.read_u16());
+}
+void AD7790_Diag::read_voltage()
+{
+ pc.printf("Voltage: %f ", dut.read_voltage());
+}
+void AD7790_Diag::set_continous_mode()
+{
+ uint8_t regVal = strtol(cmdbuffer[1].c_str(), NULL, 16);
+ dut.set_conversion_mode(static_cast<AD7790::AD7790Mode_t>(regVal));
+ pc.printf("Mode set to %d", regVal);
+}
+void AD7790_Diag::set_reference_voltage()
+{
+ float ref = strtof(cmdbuffer[1].c_str(), NULL);
+ dut.set_reference_voltage(ref);
+ pc.printf("Reference Voltage set to %f", ref);
+}
+
+void AD7790_Diag::set_channel()
+{
+ uint8_t regVal = strtol(cmdbuffer[1].c_str(), NULL, 16);
+ dut.set_channel(static_cast<AD7790::AD7790Channel_t>(regVal));
+ pc.printf("Mode set to %d", regVal);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/drvdiag/driver_wrapper/ad7790_diag.h Wed Apr 20 16:35:44 2016 +0300
@@ -0,0 +1,42 @@
+/*
+ * ad7790.h
+ *
+ * Created on: Apr 15, 2016
+ * Author: asuciu
+ */
+
+#ifndef AD7790_DIAG_H_
+#define AD7790_DIAG_H_
+
+#include "AD7790.h"
+
+class AD7790_Diag
+{
+
+public:
+ AD7790_Diag(AD7790& ad);
+ void init(void);
+ void reset(void);
+ void write_mode(void);
+ void write_filter(void);
+ void read_mode(void);
+ void read_filter(void);
+ void read_data(void);
+ void read_status(void);
+ void read_u16(void);
+ void read_voltage(void);
+ void set_continous_mode(void);
+ void set_reference_voltage(void);
+ void set_channel(void);
+
+private:
+ AD7790& dut;
+};
+
+/*
+
+*/
+
+
+
+#endif /* AD7790_DIAG_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/drvdiag/driver_wrapper/cn0357_diag.cpp Wed Apr 20 16:35:44 2016 +0300
@@ -0,0 +1,32 @@
+#include "mbed.h"
+#include <stdio.h>
+#include <vector>
+#include <string>
+#include "CN0357_Diag.h"
+
+extern Serial pc;
+extern vector<string> cmdbuffer;
+
+CN0357_Diag::CN0357_Diag(CN0357& cn) : dut(cn)
+{
+
+}
+void CN0357_Diag::set_RDAC()
+{
+ float res = strtof(cmdbuffer[1].c_str(), NULL);
+ dut.set_RDAC_value(res);
+ pc.printf("Wrote %f", res);
+
+}
+void CN0357_Diag::read_ppm(void)
+{
+ pc.printf("Wrote %f", dut.read_ppm());
+}
+
+void CN0357_Diag::set_sensor_param(void)
+{
+ float range = strtof(cmdbuffer[1].c_str(), NULL);
+ float sens = strtof(cmdbuffer[2].c_str(), NULL);
+ sens = sens * pow(10, -9);
+ pc.printf("Suggested RDAC val: %f ", dut.set_sensor_parameters(range, sens));
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/drvdiag/driver_wrapper/cn0357_diag.h Wed Apr 20 16:35:44 2016 +0300
@@ -0,0 +1,21 @@
+
+#ifndef CN0357_DIAG_H_
+#define CN0357_DIAG_H_
+#include "CN0357.h"
+
+class CN0357_Diag
+{
+public:
+ CN0357_Diag(CN0357& cn);
+
+ void set_RDAC(void);
+ void read_ppm(void);
+ void set_sensor_param(void);
+
+
+private:
+ CN0357& dut;
+};
+
+
+#endif /* AD5270_DIAG_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/drvdiag/main.cpp Wed Apr 20 16:35:44 2016 +0300
@@ -0,0 +1,148 @@
+#include "mbed.h"
+#include "stdio.h"
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include "config.h"
+
+Serial pc(SERIAL_TX, SERIAL_RX);
+vector<string> cmdbuffer;
+
+class commands
+{
+public:
+ commands(string str, int p, void (*h)() ) : cmd_str(str), nr_of_param(p), fktPtr(h) { }
+ const static int VAR = -1; // variable number of params
+ string cmd_str;
+ int nr_of_param;
+ void (*fktPtr)(void);
+};
+
+// *INDENT-OFF*
+vector<commands> cmdlist = {
+ {"nop" , 0, [](){ }},
+ {"echo",commands::VAR, [](){ for(auto i = begin(cmdbuffer) + 1, e = end(cmdbuffer); i!=e; ++i)
+ printf("%s ", i->c_str()); printf("\r\n");}},
+
+ {"help", 0 , [](){ for(auto command : cmdlist)
+ pc.printf("%s ",command.cmd_str.c_str()); }},
+ /* #### SPI ####*/
+#ifdef SPI_LOW_LEVEL
+ {"csa", 0, [](){ spibus.format(8, 3);CSA_pin = !CSA_pin; wait_us(2);
+ pc.printf("CS ADC pin set %s", ((CSA_pin.read()) ? "high" : "low") ); }},
+ {"csr", 0, [](){ spibus.format(8, 1);CSR_pin = !CSR_pin; wait_us(2);
+ pc.printf("CS RDAC pin set %s", ((CSR_pin.read()) ? "high" : "low") );} },
+ {"spi", 1, [](){ uint8_t spibyte = strtol(cmdbuffer[1].c_str(), NULL, 16);
+ pc.printf("writing 0x%x to SPI", spibyte);
+ pc.printf("\r\nreturned: 0x%x ", spibus.write(spibyte)); }},
+#endif
+ /* #### AD7790 #### */
+
+#ifdef AD7790_PRESENT
+ {"adrst", 0, [](){ad7790diag.reset();}},
+ {"adwrm", 1, [](){ad7790diag.write_mode();}},
+ {"adrdm", 0, [](){ad7790diag.read_mode();}},
+ {"adwrf", 1, [](){ad7790diag.write_filter();}},
+ {"adrdf", 0, [](){ad7790diag.read_filter();}},
+ {"adrdd", 0, [](){ad7790diag.read_data();}},
+ {"adrds", 0, [](){ad7790diag.read_status();}},
+ {"adread", 0, [](){ad7790diag.read_u16();}},
+ {"adreadv", 0, [](){ad7790diag.read_voltage();}},
+ {"adsetc", 1, [](){ad7790diag.set_continous_mode();}},
+ {"adsetref", 1, [](){ad7790diag.set_reference_voltage();}},
+ {"adsetch", 1, [](){ad7790diag.set_channel();}},
+#endif
+
+#ifdef AD5270_PRESENT
+ {"rdwrr" , 1, [](){ad5270diag.write_RDAC();}},
+ {"rdrdr" , 0, [](){ad5270diag.read_RDAC();}},
+ {"rdwrcmd" , 2, [](){ad5270diag.write_cmd();}},
+ {"rdsetz" , 0, [](){ad5270diag.set_HiZ();}},
+ {"rd50en", 0, [](){ad5270diag.enable_50TP_programming();}},
+ {"rd50ds", 0, [](){ad5270diag.disable_50TP_programming();}},
+ {"rd50st", 0, [](){ad5270diag.store_50TP();}},
+ {"rd50a" , 0, [](){ad5270diag.read_50TP_last_address();}},
+ {"rd50m" , 1, [](){ad5270diag.read_50TP_memory();}},
+ {"rdwrc" , 1, [](){ad5270diag.write_ctrl_reg();}},
+ {"rdrdc" , 0, [](){ad5270diag.read_ctrl_reg();}},
+ {"rdrst" , 0, [](){ad5270diag.reset_RDAC();}},
+ {"rdchm" , 1, [](){ad5270diag.change_mode();}},
+ {"rdwrw" , 1, [](){ad5270diag.write_wiper_reg();}},
+ {"rdrdw" , 0, [](){ad5270diag.read_wiper_reg();}},
+#endif
+
+#ifdef CN0357_PRESENT
+ {"cnwrdac" , 1, [](){cn0357diag.set_RDAC();}},
+ {"cnrppm" , 0, [](){cn0357diag.read_ppm();}},
+ {"cnparam" , 2, [](){cn0357diag.set_sensor_param();}}
+#endif
+
+};
+// *INDENT-ON*
+
+
+
+void read_from_console()
+{
+ char buffer[100] = {0};
+ size_t readPosition = 0;
+
+ // read from console until newline
+ while(1) {
+ buffer[readPosition] = pc.getc();
+ if(buffer[readPosition] == '\n' || buffer[readPosition] == '\r') {
+ buffer[readPosition] = ' ';
+ break;
+ }
+ readPosition++;
+ }
+ readPosition++;
+ buffer[readPosition] = '\0';
+ //create std::string from char buffer
+ string s(buffer);
+
+ // create std::vector of std:string, each string contains parameter
+ size_t pos = 0;
+ string delimiter = " ";
+ string token;
+ while ((pos = s.find(delimiter)) != std::string::npos) {
+ token = s.substr(0, pos);
+ cmdbuffer.push_back(token);
+ s.erase(0, pos + delimiter.length());
+ }
+
+}
+
+void run_command()
+{
+ for(auto i : cmdlist) {
+ if(i.cmd_str == cmdbuffer[0]) {
+ if(static_cast<int>(cmdbuffer.size()) - 1 == i.nr_of_param || i.nr_of_param == commands::VAR) {
+ pc.printf("RX> ");
+ i.fktPtr();
+ } else {
+ pc.printf("RX> ");
+ pc.printf("Command %s expects %d parameters, found %d", i.cmd_str.c_str(), i.nr_of_param, cmdbuffer.size() - 1);
+ }
+ return;
+ }
+ }
+ pc.printf("RX> ");
+ pc.printf("Command %s not found", cmdbuffer[0].c_str());
+
+}
+
+int main()
+{
+
+ pc.printf("\r\n#### DrvDiag ####\r\n");
+ while(1) {
+ pc.printf("\r\nTX> ");
+ read_from_console();
+ run_command();
+ cmdbuffer.clear();
+ }
+
+}
+
CN0357 - Toxic gas measurement
CN0216 - Weight Scale