I2C MUX 2 Click
I2C MUX 2 Click demo application is developed using the NECTO Studio, ensuring compatibility with mikroSDK's open-source libraries and tools. Designed for plug-and-play implementation and testing, the demo is fully compatible with all development, starter, and mikromedia boards featuring a mikroBUS™ socket.
Click Library
- Author : MikroE Team
- Date : Feb 2020.
- Type : I2C type
Software Support
Example Description
This example demonstrates the use of the I2C MUX 2 Click board.
Example Libraries
- MikroSDK.Board
- MikroSDK.Log
- Click.I2cMux2
Example Key Functions
- i2cmux2_cfg_setup Config Object Initialization function.
void i2cmux2_cfg_setup(i2cmux2_cfg_t *cfg)
Config Object Initialization function.
Click configuration structure definition.
Definition i2cmux2.h:143
- i2cmux2_init Initialization function.
err_t i2cmux2_init(i2cmux2_t *ctx, i2cmux2_cfg_t *cfg)
Initialization function.
Click ctx object definition.
Definition i2cmux2.h:124
- i2cmux2_hw_reset This function resets I2C MUX 2 Click board by clearing the RST pin for 100ms.
void i2cmux2_hw_reset(i2cmux2_t *ctx)
Hardware reset function.
- i2cmux2_set_channel Function sets channel of the I2C MUX 2 Click board.
void i2cmux2_set_channel(i2cmux2_t *ctx, uint8_t channel, uint8_t ch_slave_address)
Set channel function.
- i2cmux2_generic_read This function reads data from the desired register.
void i2cmux2_generic_read(i2cmux2_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic read function.
Application Init
Initializes the driver, performs the device reset, and makes an initial log.
{
log_cfg_t log_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, "---- Application Init ----" );
Delay_ms ( 100 );
log_printf( &logger, "I2C MUX 2 Click driver init\r\n");
log_printf( &logger, "---------------------------------------\r\n");
Delay_ms ( 100 );
log_printf( &logger, "I2C MUX 2 Click HW reset\r\n");
log_printf( &logger, "---------------------------------------\r\n");
Delay_ms ( 100 );
}
#define I2CMUX2_MAP_MIKROBUS(cfg, mikrobus)
Definition i2cmux2.h:67
void application_init(void)
Definition main.c:96
Application Task
In this example, we read the device ID register of the connected Click boards. Channel 0 : 6DOF IMU 11 Click [slave address: 0x0E; reg: 0x00; id val.: 0x2D], Channel 1 : Altitude Click [slave address: 0x60; reg: 0x0C; id val.: 0xC4], Channel 2 : 6DOF IMU 9 Click [slave address: 0x69; reg: 0x75; id val.: 0xA9], Channel 3 : Compass 3 Click [slave address: 0x30; reg: 0x2F; id val.: 0x0C]. All data logs write on USB UART changes every 2 sec.
{
log_printf( &logger, " CH | ID | INT \r\n" );
log_printf( &logger, "----------------------\r\n" );
#ifdef ENABLE_CHANNEL_0
Delay_ms ( 100 );
#endif
#ifdef ENABLE_CHANNEL_1
Delay_ms ( 100 );
#endif
#ifdef ENABLE_CHANNEL_2
Delay_ms ( 100 );
#endif
#ifdef ENABLE_CHANNEL_3
Delay_ms ( 100 );
#endif
log_printf( &logger, "----------------------\r\n" );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
#define I2CMUX2_CMD_SET_CH_1
Definition i2cmux2.h:95
#define I2CMUX2_CMD_SET_CH_3
Definition i2cmux2.h:97
#define I2CMUX2_CMD_SET_CH_0
Definition i2cmux2.h:94
#define I2CMUX2_CMD_SET_CH_2
Definition i2cmux2.h:96
void application_task(void)
Definition main.c:130
void display_log(uint8_t sel_ch)
Definition main.c:48
Note
Disable all unconnected channels from the example using ENABLE_CHANNEL_x macros below to prevent the I2C bus from blocking waiting for a device response.
Application Output
This Click board can be interfaced and monitored in two ways:
- Application Output - Use the "Application Output" window in Debug mode for real-time data monitoring. Set it up properly by following this tutorial.
- UART Terminal - Monitor data via the UART Terminal using a USB to UART converter. For detailed instructions, check out this tutorial.
Additional Notes and Information
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.