precision-converters-firmware
app_config.h
Go to the documentation of this file.
1 /*************************************************************************/
14 #ifndef APP_CONFIG_H
15 #define APP_CONFIG_H
16 
17 /******************************************************************************/
18 /***************************** Include Files **********************************/
19 /******************************************************************************/
20 #include <stdint.h>
21 #include "no_os_gpio.h"
22 #include "no_os_uart.h"
23 #include "no_os_irq.h"
24 #include "no_os_pwm.h"
25 
26 /******************************************************************************/
27 /********************** Macros and Constants Definition ***********************/
28 /******************************************************************************/
29 /* List of supported platforms */
30 #define MBED_PLATFORM 1
31 #define STM32_PLATFORM 2
32 
33 /* List of data capture modes supported by application*/
34 #define CONTINUOUS_DATA_CAPTURE 0
35 #define WINDOWED_DATA_CAPTURE 1
36 
37 /* List of supported data capture modes by device */
38 #define SAMPLE_MODE 0
39 #define BURST_AVERAGING_MODE 1
40 #define AVERAGING_MODE 2
41 
42 /* List of supported data format by device */
43 #define STRAIGHT_BINARY 0
44 #define TWOS_COMPLEMENT 1
45 
46 /* List of data capture methods supported by hardware platform */
47 #define SPI_DMA 0
48 #define SPI_INTERRUPT 1
49 
50 /* Macros for stringification */
51 #define XSTR(s) #s
52 #define STR(s) XSTR(s)
53 
54 /******************************************************************************/
55 
56 /* Select the active platform (default is Mbed) */
57 #if !defined(ACTIVE_PLATFORM)
58 #define ACTIVE_PLATFORM STM32_PLATFORM
59 #endif
60 
61 /* Enable the UART/VirtualCOM port connection (default VCOM) */
62 //#define USE_PHY_COM_PORT // Uncomment to select UART
63 
64 #if !defined(USE_PHY_COM_PORT)
65 #define USE_VIRTUAL_COM_PORT
66 #endif
67 
68 /* Select the application data capture mode (default is CC mode) */
69 #if !defined(APP_CAPTURE_MODE)
70 #define APP_CAPTURE_MODE WINDOWED_DATA_CAPTURE
71 #endif
72 
73 /* Select the ADC data capture mode (default is sample mode) */
74 #if !defined(ADC_CAPTURE_MODE)
75 #define ADC_CAPTURE_MODE SAMPLE_MODE
76 #endif
77 
78 /* Select the ADC output data format (default is straight binary mode) */
79 #if !defined(ADC_DATA_FORMAT)
80 #define ADC_DATA_FORMAT TWOS_COMPLEMENT
81 #endif
82 
83 /* Note: The STM32 platform supports SPI interrupt and SPI DMA Mode
84  * for data capturing. The MBED platform supports only SPI interrupt mode
85  * */
86 #if !defined(INTERFACE_MODE)
87 #if (ACTIVE_PLATFORM == STM32_PLATFORM)
88 #define INTERFACE_MODE SPI_DMA
89 #else // Mbed
90 #define INTERFACE_MODE SPI_INTERRUPT
91 #endif
92 #endif
93 
94 // **** Note for User on selection of Active Device ****//
95 /* Define the device type here from the list of below device type defines
96  * (one at a time. Defining more than one device can result into compile error).
97  * e.g. #define DEV_AD4050 -> This will make AD4050 as an active device.
98  * The active device is default set to AD4052 if device type is not defined.
99  * */
100 // #define DEV_AD4050
101 
102 #if defined(DEV_AD4052)
103 #define ACTIVE_DEVICE_NAME "ad4052"
104 #define DEVICE_NAME "DEV_AD4052"
105 #define ACTIVE_DEVICE_ID ID_AD4052
106 #define HW_MEZZANINE_NAME "EVAL-AD4052-ARDZ"
107 #define ADC_BURST_AVG_MODE_RESOLUTION 20
108 #elif defined(DEV_AD4050)
109 #define ACTIVE_DEVICE_NAME "ad4050"
110 #define DEVICE_NAME "DEV_AD4050"
111 #define ACTIVE_DEVICE_ID ID_AD4050
112 #define HW_MEZZANINE_NAME "EVAL-AD4050-ARDZ"
113 #define ADC_BURST_AVG_MODE_RESOLUTION 16
114 #else
115 #define ACTIVE_DEVICE_NAME "ad4052"
116 #define DEVICE_NAME "DEV_AD4052"
117 #define ACTIVE_DEVICE_ID ID_AD4052
118 #define HW_MEZZANINE_NAME "EVAL-AD4052-ARDZ"
119 #define ADC_BURST_AVG_MODE_RESOLUTION 20
120 #endif
121 
122 #if (ACTIVE_PLATFORM == MBED_PLATFORM)
123 #include "app_config_mbed.h"
124 #define HW_CARRIER_NAME TARGET_NAME
125 #elif (ACTIVE_PLATFORM == STM32_PLATFORM)
126 #include "app_config_stm32.h"
127 #define HW_CARRIER_NAME TARGET_NAME
128 #if (INTERFACE_MODE != SPI_DMA)
129 #define trigger_gpio_handle 0 // Unused macro
130 #else
131 #define trigger_gpio_handle STM32_DMA_CONT_HANDLE
132 #endif
133 #if (INTERFACE_MODE == SPI_DMA)
134 #define TRIGGER_INT_ID STM32_DMA_CONT_TRIGGER
135 #else
136 #define TRIGGER_INT_ID GP1_PIN_NUM
137 #endif
138 #else
139 #error "No/Invalid active platform selected"
140 #endif
141 
142 /* ADC resolution for active device */
143 #define ADC_SAMPLE_MODE_RESOLUTION 16
144 #define ADC_AVERAGING_MODE_RESOLUTION 24 //TODO check if it works for AD4050 too
145 #define DEFAULT_BURST_SAMPLE_RATE 2000000
146 
147 /* ADC reference voltage (Range: 2.5 to 3.3v) */
148 #define ADC_REF_VOLTAGE 2.5
149 
150 #if (ADC_CAPTURE_MODE == SAMPLE_MODE)
151 #if (ADC_DATA_FORMAT == STRAIGHT_BINARY)
152 #define ADC_MAX_COUNT (uint32_t)(1 << (ADC_SAMPLE_MODE_RESOLUTION))
153 #else
154 #define ADC_MAX_COUNT (uint32_t)(1 << (ADC_SAMPLE_MODE_RESOLUTION - 1))
155 #endif
156 #else
157 #if (ADC_DATA_FORMAT == STRAIGHT_BINARY)
158 #define ADC_MAX_COUNT (uint32_t)(1 << (ADC_BURST_AVG_MODE_RESOLUTION))
159 #else
160 #define ADC_MAX_COUNT (uint32_t)(1 << (ADC_BURST_AVG_MODE_RESOLUTION - 1))
161 #endif
162 #endif
163 
164 /* Time taken for the application to process the interrupt and
165  * push data into iio buffer. */
166 #define MIN_DATA_CAPTURE_TIME_NS 8000
167 
168 /* Time taken by the MCU to Jump into the ISR after the occurrence of
169  * data ready event */
170 #if (APP_CAPTURE_MODE == CONTINUOUS_DATA_CAPTURE)
171 #define MIN_INTERRUPT_OVER_HEAD 4500
172 #else
173 #define MIN_INTERRUPT_OVER_HEAD 3000
174 #endif
175 
176 /* Baud rate for IIO application UART interface */
177 #define IIO_UART_BAUD_RATE (230400)
178 
179 /****** Macros used to form a VCOM serial number ******/
180 /* Used to form a VCOM serial number */
181 #define FIRMWARE_NAME "ad405x_iio"
182 
183 #if !defined(PLATFORM_NAME)
184 #define PLATFORM_NAME HW_CARRIER_NAME
185 #endif
186 
187 /* Below USB configurations (VID and PID) are owned and assigned by ADI.
188  * If intended to distribute software further, use the VID and PID owned by your
189  * organization */
190 #define VIRTUAL_COM_PORT_VID 0x0456
191 #define VIRTUAL_COM_PORT_PID 0xb66c
192 /* Serial number string is formed as: application name + device (target) name + platform (host) name */
193 #define VIRTUAL_COM_SERIAL_NUM (FIRMWARE_NAME "_" DEVICE_NAME "_" STR(PLATFORM_NAME))
194 
195 /* Check if any serial port available for use as console stdio port */
196 #if defined(USE_PHY_COM_PORT)
197 /* If PHY com is selected, VCOM or alternate PHY com port can act as a console stdio port */
198 #if (ACTIVE_PLATFORM == MBED_PLATFORM)
199 #define CONSOLE_STDIO_PORT_AVAILABLE
200 #endif
201 #else
202 /* If VCOM is selected, PHY com port will/should act as a console stdio port */
203 #define CONSOLE_STDIO_PORT_AVAILABLE
204 #endif
205 
206 /* Enable/Disable the use of SDRAM for ADC data capture buffer */
207 //#define USE_SDRAM // Uncomment to use SDRAM as data buffer
208 
209 /******************************************************************************/
210 /********************** Variables and User Defined Data Types *****************/
211 /******************************************************************************/
212 
213 /******************************************************************************/
214 /************************ Public Declarations *********************************/
215 /******************************************************************************/
216 extern struct no_os_pwm_desc *pwm_desc;
217 extern struct no_os_uart_desc *uart_iio_com_desc;
218 extern struct no_os_uart_desc *uart_console_stdio_desc;
219 extern struct no_os_gpio_desc *trigger_gpio_desc;
220 extern struct no_os_irq_ctrl_desc *trigger_irq_desc;
221 extern struct no_os_eeprom_desc *eeprom_desc;
222 extern struct no_os_gpio_init_param cs_pwm_gpio_params;
223 extern struct no_os_gpio_init_param pwm_gpio_params;
224 
225 #if (INTERFACE_MODE == SPI_DMA)
226 extern struct no_os_dma_xfer_desc dma_tx_desc;
227 extern struct no_os_dma_ch dma_chan;
228 extern struct no_os_pwm_init_param cs_init_params;
229 extern struct no_os_pwm_init_param pwm_init_params;
230 extern struct no_os_dma_init_param ad405x_dma_init_param;
231 extern struct no_os_gpio_init_param cs_pwm_gpio_params;
232 extern struct no_os_gpio_init_param pwm_gpio_params;
233 extern volatile uint32_t* buff_start_addr;
234 extern volatile struct iio_device_data* iio_dev_data_g;
235 extern uint32_t nb_of_samples_g;
236 extern int32_t data_read;
237 extern struct no_os_pwm_desc* tx_trigger_desc;
238 #endif
239 
240 int32_t init_pwm(void);
241 int32_t ad405x_gpio_reset(void);
242 int32_t init_system(void);
243 
244 #endif //APP_CONFIG_H
struct no_os_irq_ctrl_desc * trigger_irq_desc
Definition: app_config.c:103
int32_t init_system(void)
Initialize the system peripherals.
Definition: app_config.c:185
struct no_os_uart_desc * uart_iio_com_desc
Definition: app_config.c:127
struct no_os_dma_ch dma_chan
volatile struct iio_device_data * iio_dev_data_g
Definition: ad405x_iio.c:331
uint32_t nb_of_samples_g
Definition: ad405x_iio.c:334
struct no_os_pwm_init_param pwm_init_params
Definition: app_config.c:108
struct no_os_eeprom_desc * eeprom_desc
Definition: app_config.c:194
struct no_os_pwm_desc * tx_trigger_desc
Definition: app_config.c:202
struct no_os_dma_xfer_desc dma_tx_desc
int32_t ad405x_gpio_reset(void)
struct no_os_pwm_desc * pwm_desc
Definition: app_config.c:106
struct no_os_gpio_desc * trigger_gpio_desc
Definition: app_config.c:192
struct no_os_gpio_init_param cs_pwm_gpio_params
Definition: app_config.h:231
struct no_os_pwm_init_param cs_init_params
Definition: app_config.c:133
volatile uint32_t * buff_start_addr
Definition: ad405x_iio.c:174
int32_t data_read
Definition: ad405x_iio.c:337
struct no_os_gpio_init_param pwm_gpio_params
Definition: app_config.h:232
int32_t init_pwm(void)
Initialize the PWM interface.
Definition: app_config.c:283
struct no_os_dma_init_param ad405x_dma_init_param
Definition: app_config.c:205
struct no_os_uart_desc * uart_console_stdio_desc
Definition: app_config.c:100
Header file for STM32 platform configurations.