The DC2903A is a fully featured evaluation board that allows evaluation of the LTC2672, a five-channel, current source output digital-to-analog converter (DAC). The DC2903A is controlled through a serial peripheral interface (SPI) from the J1 connector. The SPI signals are sent from the DC2026C controller board through the ribbon cable that is connected to the DC2903A.
The LTC2672 is used for various current-mode biasing applications such as tunable lasers or resistive heaters. The output current ranges are software selectable, and each channel is routed to the DC2903A MUX pin for external monitoring.
The DC2903A board has provision for dual supply operation. The positive voltage supply can range from 2.8 V to 5.5 V, while the negative supply voltage can handle voltages from -5.5 V up to 0 V or GND. To ensure proper operation, make sure that the supply used can source at least the total maximum current expected from each channel.
If the maximum current output expected from each channel is 300 mA, then the supply used should be able to source at least 1500 mA (for example, 300 mA x 5 channels) to operate the device properly across all available span and current levels.
The QuikEval system is a USB-based product demonstration and data acquisition system that allows users to quickly evaluate the performance of Linear Technology products, including the LTC2672. Its interface is a 14-pin connection that allows the Linduino to connect with over a hundred Analog Devices daughter boards for parts including analog-to-digital converters, digital-to-analog converters, high-voltage power monitors, temperature measurement devices, RF synthesizers, battery stack monitors, and more.
The specific interface used for the DC2903A boards is SPI.
P1 Pin Number | Pin Function | Mnemonic |
---|---|---|
Pin 1 | +7 V. Unregulated | 7V |
Pin 2 | I/O Voltage | IOVDD |
Pin 3 | Board Ground | GND |
Pin 4 | *Serial Clock | SCLK |
Pin 5 | Master In Slave Out | MISO |
Pin 6 | Chip Select | CS |
Pin 7 | *Master Out Slave In | MOSI |
Pin 8 | Board Ground | GND |
Pin 9 | EEPROM SDA (I2C) | EESDA |
Pin 10 | EEPROM VCC | EEVCC |
Pin 11 | EEPROM SCL (I2C) | EESCL |
Pin 12 | EEPROM Ground | GND |
Pin 13 | Board Ground | GND |
Pin 14 | Free GPIO | GPIO |
* - pin has alternate function. Serial Clock is for either SPI or I2C. Master Out Slave In or MOSI also acts as SDA pin for I2C mode.
The goal of ADI Microcontroller No-OS is to provide reference projects for lower end processors, which can't run Linux or aren't running a specific operating system, and to help those customers using microcontrollers with ADI parts. ADI No-OS offers generic drivers, which can be used as a base for any microcontroller platform and also example projects, which are using these drivers on various microcontroller platforms.
For more information about ADI No-OS and supported microcontroller platforms, visit the No-OS User Guide found here.
Information about the LTC2672 driver can be found here: LTC2672 No-OS Driver
The MAX32666FTHR does not have a PMOD interface, but you may use Dupont female-female cables to make the required connections. The table below shows the connection between DC2903A and MAX32666FTHR.
DC2903A Pin Number | MAX32666 Pin Number | Function | Mnemonic |
---|---|---|---|
Pin 1 | 3V3. | 3.3V Supply (for IO) | 3V3 |
Pin 3 | GND. | Board Ground | GND |
SCK | AIN3 | Serial Clock | SCLK |
SDI | AIN1 | Master In Slave Out | MISO |
CS/LO | AIN0 | Chip Select | CS |
SDO | AIN2 | Master Out Slave In | MOSI |
After connecting the pins from the DC2903A QuikEval interface to the MAX32666FTHR's pins, connect the corresponding pins to VCC, V-, and GND. Make sure that the voltages to these pins are within the normal operating range. Power up the supplies in any order as the device doesn't need any sequencing.
Clone NO-OS with the --recursive
flag:
git clone --recursive https://github.com/analogdevicesinc/no-OS
If however you've already cloned NO-OS without the --recursive
flag, you may initialize all the submodules in an existing NO-OS clone with:
git submodule update --recursive --init
Follow the steps below for No-OS setup based on the environment you are using. Make sure you use the information for the specific platform you are using (e.g., MAXIM).
Prior to building a no-OS project, it is required to set up some environment variables so that the build process may find the necessary tools (compiler, linker, SDK etc.).
Use the following commands to prepare your environment for building no-OS projects:
The path of the project is no-OS/projects/max11205pmb1/
Go in the project directory that should be built.
The build process creates a build directory in the project folder:
build ├── app ├── bsp ├── obj ├── release.elf └── tmp
Once the .elf
or .hex
file has been generated, make sure the board is powered on, JTAG cable connected and use the following commands to upload the program to the board or debug.
Uploading the binary to target is generically achieved with:
$ make run
Use the following command to launch the SDK associated to the used platform in order to be able to debug graphically by clicking the debug button:
$ make sdkopen
Fore more details about the available make rules, check out this page.
In order to build the basic example project, make sure you have the following configuration in the Makefile:
# Select the example you want to enable by choosing y for enabling and n for disabling BASIC_EXAMPLE = y
When running make command, make sure to specify the platform you want to build the project for.
The basic project contains the generic HAL initialization of the used platform, together with the SPI, and UART driver configuration and initialization.
The SPI driver is used to communicate with the DC2903A device and change its settings, and the UART driver is used to display on the host machine the device configuration at a given instance.
The basic project contains the LTC2672 driver initialization and project functions:
/* Continuously configure the part and measure pins with multimeter for verification */ while (1) { ret = ltc2672_set_span_all_channels(ltc2672_desc, LTC2672_50VREF); // max current of 3.125mA if (ret) return ret; /* Print Span set to all channels */ pr_info("All DAC channels have span config of 3.125mA\n"); for (i = 0; i < num_currents; i++) { ret = ltc2672_set_current_all_channels(ltc2672_desc, currents_to_set[i]); if (ret) return ret; /* Print Current set to all channels */ pr_info("All DAC channels have current of: %0.2f mA\n", currents_to_set[i]); no_os_mdelay(1500); } /* Configure MUX pin to output the VREF measurement */ pr_info("MUX ouptut pin configured to measure VREF (~1.25V).\n"); ret = ltc2672_monitor_mux(ltc2672_desc, LTC2672_MUX_VREF); if (ret) return ret; no_os_mdelay(2000); /* Chip Power Down */ pr_info("Chip Power Down. All Channels and VREF should measure 0.\n"); ret = ltc2672_chip_power_down(ltc2672_desc); if (ret) return ret; no_os_mdelay(2000); /* Setup and Demo toggle function on OUT3 */ pr_info("Toggle function on OUT3. Current toggles between %0.2f and %0.2f mA.\n", currents_to_toggle[0], currents_to_toggle[1]); ret = ltc2672_setup_toggle_channel(ltc2672_desc, LTC2672_DAC3, currents_to_toggle[0], currents_to_toggle[1]); if (ret) return ret; ret = ltc2672_enable_toggle_channel(ltc2672_desc, 8); if (ret) return ret; for (i = 0; i < toggle_times; i++) { toggle_flag ^= true; ret = ltc2672_global_toggle(ltc2672_desc, toggle_flag); if (ret) return ret; no_os_mdelay(2000); } ret = ltc2672_enable_toggle_channel(ltc2672_desc, 0); if (ret) return ret; no_os_mdelay(2000); }// end while return 0; }
Serial output when running the basic project:
All DAC channels have span config of 3.125 mA All DAC channels have current of: 0.21 mA All DAC channels have current of: 0.41 mA All DAC channels have current of: 1.21 mA All DAC channels have current of: 1.41 mA MUX ouptut pin configured to measure VREF (~1.25V). Chip Power Down. All Channels and VREF should measure 0. Toggle function on OUT3. Current toggles between 0.40 and 0.10 mA.
Here are the steps on checking the hardware output when using the example code.
End of document