Enhance the connectivity and versatility of your electronic projects with our multi-port I/O expander, featuring bi-directional input/outputs for seamless data flow and control expansion
A
A
Hardware Overview
How does it work?
Expand 8 Click is based on the MAX7317, a general-purpose input/output (GPIO) peripheral from Analog Devices that provides 10 I/O ports, P0 to P9, controlled through a high-speed SPI-compatible serial interface. Each port, P0 to P9, can be configured as open-drain, current-sink outputs rated at 20mA maximum, CMOS inputs, or open-drain outputs. Loads should be connected to a supply voltage no higher than 7V. The MAX7317 contains ten 8-bit internal registers. These ten registers addressed as 0x00 - 0x09 control an I/O
port each. Write 0x00 to the output register to set the port as a logic-low output or 0x01 to set the port as a logic-high output or logic input. Expand 8 Click communicates with MCU through a 16-bit 4-wire serial interface compatible with standard SPI, QSPI™, and MICROWIRE™ guaranteed to operate at 35Mbps on its 3.3V power supply. During the Power-Up sequence, all control registers of the MAX7317 are in a reset state. Power-Up status sets I/O ports, P0 to P9, into a high impedance state and puts the device into
Shutdown mode. The I/O ports P0–P9 remain high impedance with up to 8V asserted on them when the MAX7317 is powered down. Therefore, it can be used in hot-swap applications. This Click board™ can be operated only with a 3.3V logic voltage level. The board must perform appropriate logic voltage level conversion before using MCUs with different logic levels. Also, it comes equipped with a library containing functions and an example code that can be used as a reference for further development.
Features overview
Development board
UNI-DS v8 is a development board specially designed for the needs of rapid development of embedded applications. It supports a wide range of microcontrollers, such as different STM32, Kinetis, TIVA, CEC, MSP, PIC, dsPIC, PIC32, and AVR MCUs regardless of their number of pins, and a broad set of unique functions, such as the first-ever embedded debugger/programmer over WiFi. The development board is well organized and designed so that the end-user has all the necessary elements, such as switches, buttons, indicators, connectors, and others, in one place. Thanks to innovative manufacturing technology, UNI-DS v8 provides a fluid and immersive working experience, allowing access anywhere and under any
circumstances at any time. Each part of the UNI-DS v8 development board contains the components necessary for the most efficient operation of the same board. An advanced integrated CODEGRIP programmer/debugger module offers many valuable programming/debugging options, including support for JTAG, SWD, and SWO Trace (Single Wire Output)), and seamless integration with the Mikroe software environment. Besides, it also includes a clean and regulated power supply module for the development board. It can use a wide range of external power sources, including a battery, an external 12V power supply, and a power source via the USB Type-C (USB-C) connector. Communication options such as USB-UART, USB
HOST/DEVICE, CAN (on the MCU card, if supported), and Ethernet is also included. In addition, it also has the well-established mikroBUS™ standard, a standardized socket for the MCU card (SiBRAIN standard), and two display options for the TFT board line of products and character-based LCD. UNI-DS v8 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

Type
8th Generation
Architecture
PIC32
MCU Memory (KB)
256
Silicon Vendor
Microchip
Pin count
100
RAM (Bytes)
65536
Used MCU Pins
mikroBUS™ mapper
Take a closer look
Click board™ Schematic

Step by step
Project assembly
Track your results in real time
Application Output
1. Application Output - In Debug mode, the 'Application Output' window enables real-time data monitoring, offering direct insight into execution results. Ensure proper data display by configuring the environment correctly using the provided tutorial.

2. UART Terminal - Use the UART Terminal to monitor data transmission via a USB to UART converter, allowing direct communication between the Click board™ and your development system. Configure the baud rate and other serial settings according to your project's requirements to ensure proper functionality. For step-by-step setup instructions, refer to the provided tutorial.

3. Plot Output - The Plot feature offers a powerful way to visualize real-time sensor data, enabling trend analysis, debugging, and comparison of multiple data points. To set it up correctly, follow the provided tutorial, which includes a step-by-step example of using the Plot feature to display Click board™ readings. To use the Plot feature in your code, use the function: plot(*insert_graph_name*, variable_name);. This is a general format, and it is up to the user to replace 'insert_graph_name' with the actual graph name and 'variable_name' with the parameter to be displayed.

Software Support
Library Description
This library contains API for Expand 8 Click driver.
Key functions:
expand8_write_data
- Generic write data functionexpand8_read_data
- Generic read data functionexpand8_set_port
- Set port function
Open Source
Code example
The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.
/*!
* @file main.c
* @brief Expand8 Click example
*
* # Description
* This is an example that demonstrates the use of the Expand 8 Click board.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initialization driver enables - SPI, also write log.
*
* ## Application Task
* This example is working by toggling each of 10 available ports every 1 second.
* Results are being sent to the Uart Terminal where you can track their changes.
*
* @author Mikroe Team
*
*/
#include "board.h"
#include "log.h"
#include "expand8.h"
static expand8_t expand8;
static log_t logger;
uint8_t select_port;
void application_init ( void )
{
log_cfg_t log_cfg; /**< Logger config object. */
expand8_cfg_t expand8_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.
expand8_cfg_setup( &expand8_cfg );
EXPAND8_MAP_MIKROBUS( expand8_cfg, MIKROBUS_1 );
err_t init_flag = expand8_init( &expand8, &expand8_cfg );
if ( SPI_MASTER_ERROR == init_flag ) {
log_error( &logger, " Application Init Error. " );
log_info( &logger, " Please, run program again... " );
for ( ; ; );
}
log_info( &logger, " Application Task " );
select_port = EXPAND8_ADDR_OUT_LVL_PORT_P0;
Delay_ms ( 100 );
}
void application_task ( void )
{
expand8_set_port( &expand8, select_port, EXPAND8_SET_LOW_IMPEDANCE );
log_printf( &logger, " Port P%d - ON\r\n", ( uint16_t ) select_port );
log_printf( &logger, "- - - - - - - - - - -\r\n" );
Delay_ms ( 1000 );
expand8_set_port( &expand8, select_port, EXPAND8_SET_HIGH_IMPEDANCE );
log_printf( &logger, " Port P%d - OFF\r\n", ( uint16_t ) select_port );
log_printf( &logger, "---------------------\r\n" );
Delay_ms ( 1000 );
select_port++;
if ( select_port > EXPAND8_ADDR_OUT_LVL_PORT_P9 )
{
select_port = EXPAND8_ADDR_OUT_LVL_PORT_P0;
}
}
int main ( void )
{
/* Do not remove this line or clock might not be set correctly. */
#ifdef PREINIT_SUPPORTED
preinit();
#endif
application_init( );
for ( ; ; )
{
application_task( );
}
return 0;
}
// ------------------------------------------------------------------------ END