no-OS
Loading...
Searching...
No Matches
curvetrace_example.c File Reference

BJT Curve tracer example for AD5592R (NPN) and AD5593R (PNP). More...

#include "example.h"
#include "common_data.h"
#include "parameters.h"
#include "no_os_delay.h"
#include "no_os_print_log.h"
#include "no_os_uart.h"
#include "ad5592r.h"
#include "ad5593r.h"
#include "lm75.h"
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>
Include dependency graph for curvetrace_example.c:

Classes

struct  curve_trace_cfg
 

Macros

#define DEFINE_AD5592R_IP()
 
#define DEFINE_AD5593R_IP()
 
#define NUM_CURVES   5
 
#define NUM_POINTS   50
 
#define GRAPH_HEIGHT   20
 
#define GRAPH_WIDTH   60
 

Typedefs

typedef int32_t(* ad559xr_init_fn) (struct ad5592r_dev **, struct ad5592r_init_param *)
 
typedef int32_t(* ad559xr_remove_fn) (struct ad5592r_dev *)
 
typedef int32_t(* ad559xr_write_dac_fn) (struct ad5592r_dev *, uint8_t, uint16_t)
 
typedef int32_t(* ad559xr_read_adc_fn) (struct ad5592r_dev *, uint8_t, uint16_t *)
 

Functions

int ad5592r_curve_example (struct no_os_uart_desc *uart_desc)
 
int ad5593r_curve_example (struct no_os_uart_desc *uart_desc)
 
int lm75_example (struct no_os_uart_desc *uart_desc)
 
int curvetrace_example (void)
 
 example_main ("curvetrace_example")
 

Detailed Description

BJT Curve tracer example for AD5592R (NPN) and AD5593R (PNP).

Author
Sean Bono Macariola (SeanB.nosp@m.ono..nosp@m.Macar.nosp@m.iola.nosp@m.@anal.nosp@m.og.c.nosp@m.om)
Marc Paolo Sosa (MarcP.nosp@m.aolo.nosp@m..Sosa.nosp@m.@ana.nosp@m.log.c.nosp@m.om)

Copyright 2026(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ DEFINE_AD5592R_IP

#define DEFINE_AD5592R_IP ( )
Value:
{ \
.int_ref = true, \
.spi_init = &ad5592r_spi_ip, \
.i2c_init = NULL, \
.ss_init = AD5592R_SPI_SS_IP, \
.channel_modes = { \
CH_MODE_DAC, /* channel 0 */ \
CH_MODE_ADC, /* channel 1 */ \
CH_MODE_DAC_AND_ADC, /* channel 2 */ \
CH_MODE_DAC, /* channel 3 For green LED */ \
CH_MODE_UNUSED, /* channel 4 */ \
CH_MODE_UNUSED, /* channel 5 */ \
CH_MODE_UNUSED, /* channel 6 */ \
CH_MODE_UNUSED, /* channel 7 */ \
}, \
.channel_offstate = { \
CH_OFFSTATE_OUT_TRISTATE, /* channel 0 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 1 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 2 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 3 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 4 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 5 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 6 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 7 */ \
}, \
.adc_range = ZERO_TO_VREF, \
.dac_range = ZERO_TO_VREF, \
.adc_buf = false, \
}
#define CH_MODE_ADC
Definition ad5592r-base.h:24
@ ZERO_TO_VREF
Definition ad5592r-base.h:98
#define CH_OFFSTATE_OUT_TRISTATE
Definition ad5592r-base.h:33
#define CH_MODE_DAC
Definition ad5592r-base.h:25
#define CH_MODE_UNUSED
Definition ad5592r-base.h:23
#define CH_MODE_DAC_AND_ADC
Definition ad5592r-base.h:26
struct no_os_spi_init_param ad5592r_spi_ip
Definition common_data.c:13
#define NULL
Definition wrapper.h:67

◆ DEFINE_AD5593R_IP

#define DEFINE_AD5593R_IP ( )
Value:
{ \
.int_ref = true, \
.spi_init = NULL, \
.i2c_init = &ad5593r_i2c_ip, \
.ss_init = NULL, \
.channel_modes = { \
CH_MODE_DAC, /* channel 0 - Base drive */ \
CH_MODE_ADC, /* channel 1 - Collector sense */ \
CH_MODE_DAC_AND_ADC, /* channel 2 - Collector drive */ \
CH_MODE_DAC, /* channel 3 - Emitter drive (PNP needs high-side supply) */ \
CH_MODE_UNUSED, /* channel 4 */ \
CH_MODE_UNUSED, /* channel 5 */ \
CH_MODE_UNUSED, /* channel 6 */ \
CH_MODE_UNUSED, /* channel 7 */ \
}, \
.channel_offstate = { \
CH_OFFSTATE_OUT_TRISTATE, /* channel 0 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 1 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 2 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 3 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 4 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 5 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 6 */ \
CH_OFFSTATE_OUT_TRISTATE, /* channel 7 */ \
}, \
.adc_range = ZERO_TO_VREF, \
.dac_range = ZERO_TO_VREF, \
.adc_buf = false, \
}
struct no_os_i2c_init_param ad5593r_i2c_ip
Definition common_data.c:56

◆ GRAPH_HEIGHT

#define GRAPH_HEIGHT   20

◆ GRAPH_WIDTH

#define GRAPH_WIDTH   60

◆ NUM_CURVES

#define NUM_CURVES   5

◆ NUM_POINTS

#define NUM_POINTS   50

Typedef Documentation

◆ ad559xr_init_fn

typedef int32_t(* ad559xr_init_fn) (struct ad5592r_dev **, struct ad5592r_init_param *)

Function pointer types for AD559xR device operations

◆ ad559xr_read_adc_fn

typedef int32_t(* ad559xr_read_adc_fn) (struct ad5592r_dev *, uint8_t, uint16_t *)

◆ ad559xr_remove_fn

typedef int32_t(* ad559xr_remove_fn) (struct ad5592r_dev *)

◆ ad559xr_write_dac_fn

typedef int32_t(* ad559xr_write_dac_fn) (struct ad5592r_dev *, uint8_t, uint16_t)

Function Documentation

◆ ad5592r_curve_example()

int ad5592r_curve_example ( struct no_os_uart_desc * uart_desc)

◆ ad5593r_curve_example()

int ad5593r_curve_example ( struct no_os_uart_desc * uart_desc)

◆ curvetrace_example()

int curvetrace_example ( void )

◆ example_main()

example_main ( "curvetrace_example" )

◆ lm75_example()

int lm75_example ( struct no_os_uart_desc * uart_desc)