Ready to take on even the most demanding designs? Our high-performance ADC is up to the challenge!
A
A
Hardware Overview
How does it work?
ADC 21 Click is based on the ADC1283, a high-performance eight-channel analog-to-digital converter from STMicroelectronics. The ADC1283 implements a successive approximation register (SAR) structure to convert analog signals into 12-bit pure binary digital outputs. The conversion circuit includes a fast settling time comparator to convey instruction into the register to store digital 0 or 1 and a redistribution DAC with logic control to have the ADC compare the track signal with a reference signal at each clock cycle. ADC 21 Click communicates with MCU through a standard SPI interface and operates at clock rates up to 3.2MHz,
for all configurations and acquiring conversion results. The AD conversion is carried out in two phases. The sampling phase conveys the input signal through the capacitance array for the first three clock cycles, and then, the evaluation phase performs the conversion into a digital 12-bit signal within 13 clock cycles. At each clock cycle of the evaluation phase, the hold signal is compared with a new value distributed by the DAC, and the result is stored in the 12-bit register, with MSB first. A complete conversion requires 16 clock cycles to generate a new 12-bit word on the SDO pin on the mikroBUS™ socket. This Click board™ can operate with
either 3.3V or 5V logic voltage levels selected via the VCC SEL jumper. This way, it is allowed for both 3.3V and 5V capable MCUs to use the communication lines properly. Additionally, there is a possibility for the ADC1283 analog power supply selection via jumper labeled AVCC SEL to supply the ADC1283 from an external power supply, in the range from 2.7V to 5.5V or with mikroBUS™ power rails. However, the Click board™ comes equipped with a library containing easy-to-use functions and an example code that can be used, as a reference, for further development.
Features overview
Development board
EasyPIC v7a is the seventh generation of PIC development boards specially designed for the needs of rapid development of embedded applications. It supports a wide range of 8-bit PIC microcontrollers from Microchip and has a broad set of unique functions, such as the first-ever embedded debugger/programmer over USB-C. The development board is well organized and designed so that the end-user has all the necessary elements in one place, such as switches, buttons, indicators, connectors, and others. With four different connectors for each port, EasyPIC v7a allows you to connect accessory boards, sensors, and custom electronics more efficiently than ever. Each part of the EasyPIC v7a development board
contains the components necessary for the most efficient operation of the same board. In addition to the advanced integrated CODEGRIP programmer/debugger module, which offers many valuable programming/debugging options and seamless integration with the Mikroe software environment, the board also includes a clean and regulated power supply module for the development board. It can use various external power sources, including an external 12V power supply, 7-23V AC or 9-32V DC via DC connector/screw terminals, and a power source via the USB Type-C (USB-C) connector. Communication options such as USB-UART and RS-232 are also included, alongside the well-
established mikroBUS™ standard, three display options (7-segment, graphical, and character-based LCD), and several different DIP sockets. These sockets cover a wide range of 8-bit PIC MCUs, from PIC10F, PIC12F, PIC16F, PIC16Enh, PIC18F, PIC18FJ, and PIC18FK families. EasyPIC v7a is an integral part of the Mikroe ecosystem for rapid development. Natively supported by Mikroe software tools, it covers many aspects of prototyping and development thanks to a considerable number of different Click boards™ (over a thousand boards), the number of which is growing every day.
Microcontroller Overview
MCU Card / MCU
Architecture
PIC
MCU Memory (KB)
32
Silicon Vendor
Microchip
Pin count
40
RAM (Bytes)
2048
Used MCU Pins
mikroBUS™ mapper
Take a closer look
Schematic
Step by step
Project assembly
Track your results in real time
Application Output
After pressing the "FLASH" button on the left-side panel, it is necessary to open the UART terminal to display the achieved results. By clicking on the Tools icon in the right-hand panel, multiple different functions are displayed, among which is the UART Terminal. Click on the offered "UART Terminal" icon.
Once the UART terminal is opened, the window takes on a new form. At the top of the tab are two buttons, one for adjusting the parameters of the UART terminal and the other for connecting the UART terminal. The tab's lower part is reserved for displaying the achieved results. Before connecting, the terminal has a Disconnected status, indicating that the terminal is not yet active. Before connecting, it is necessary to check the set parameters of the UART terminal. Click on the "OPTIONS" button.
In the newly opened UART Terminal Options field, we check if the terminal settings are correct, such as the set port and the Baud rate of UART communication. If the data is not displayed properly, it is possible that the Baud rate value is not set correctly and needs to be adjusted to 115200. If all the parameters are set correctly, click on "CONFIGURE".
The next step is to click on the "CONNECT" button, after which the terminal status changes from Disconnected to Connected in green, and the data is displayed in the Received data field.
Software Support
Library Description
This library contains API for ADC 21 Click driver.
Key functions:
adc21_read_raw_adc
This function reads raw ADC value from the selected channel by using SPI serial interface.adc21_read_voltage
This function reads raw ADC value from the selected channel and converts it to proportional voltage level depending on the AVCC selection.
Open Source
Code example
This example can be found in NECTO Studio. Feel free to download the code, or you can copy the code below.
/*!
* @file main.c
* @brief ADC 21 Click example
*
* # Description
* This example demonstrates the use of ADC 21 click board by reading and displaying
* the voltage levels from 8 analog input channels.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes the driver and logger.
*
* ## Application Task
* Reads the voltage levels from all 8 analog input channels and displays the results
* on the USB UART once per second approximately.
*
* @author Stefan Filipovic
*
*/
#include "board.h"
#include "log.h"
#include "adc21.h"
static adc21_t adc21;
static log_t logger;
void application_init ( void )
{
log_cfg_t log_cfg; /**< Logger config object. */
adc21_cfg_t adc21_cfg; /**< Click config object. */
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
adc21_cfg_setup( &adc21_cfg );
ADC21_MAP_MIKROBUS( adc21_cfg, MIKROBUS_1 );
if ( SPI_MASTER_ERROR == adc21_init( &adc21, &adc21_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}
void application_task ( void )
{
static uint8_t ch_num = ADC21_CHANNEL_0;
float ch_voltage;
if ( ADC21_OK == adc21_read_voltage ( &adc21, ch_num, ADC21_AVCC_3V3, &ch_voltage ) )
{
log_printf ( &logger, " CH%u voltage: %.2f V\r\n", ( uint16_t ) ch_num, ch_voltage );
}
if ( ++ch_num > ADC21_CHANNEL_7 )
{
log_printf ( &logger, " ------------------------\r\n\n" );
ch_num = ADC21_CHANNEL_0;
Delay_ms ( 1000 );
}
}
void main ( void )
{
application_init( );
for ( ; ; )
{
application_task( );
}
}
// ------------------------------------------------------------------------ END