c1wirei2c 2.1.0.0
Main Page

1-Wire I2C click

‍1-Wire I2C click carries DS28E17 1-Wire-to-I2C master bridge from Analog Devices.

click Product page


Click library

  • Author : Stefan Filipovic
  • Date : Feb 2024.
  • Type : One Wire type

Software Support

We provide a library for the 1-Wire I2C Click as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.

Package can be downloaded/installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Library Description

‍This library contains API for 1-Wire I2C Click driver.

Standard key functions :

Example key functions :

  • c1wirei2c_reset_device This function resets the device by toggling the RST pin state.
    void c1wirei2c_reset_device(c1wirei2c_t *ctx)
    1-Wire I2C reset device function.
  • c1wirei2c_write_data This function addresses and writes 1-255 bytes to an I2C slave without completing the transaction with a stop.
    err_t c1wirei2c_write_data ( c1wirei2c_t *ctx, uint8_t slave_addr, uint8_t *data_in, uint8_t len );
    err_t c1wirei2c_write_data(c1wirei2c_t *ctx, uint8_t slave_addr, uint8_t *data_in, uint8_t len)
    1-Wire I2C write data function.
  • c1wirei2c_read_data_stop This function is used to address and read 1-255 bytes from an I2C slave in one transaction.
    err_t c1wirei2c_read_data_stop ( c1wirei2c_t *ctx, uint8_t slave_addr, uint8_t *data_out, uint8_t len );
    err_t c1wirei2c_read_data_stop(c1wirei2c_t *ctx, uint8_t slave_addr, uint8_t *data_out, uint8_t len)
    1-Wire I2C read data stop function.

Example Description

‍This example demonstrates the use of 1-Wire I2C click board by reading the temperature measurement from connected Thermo 4 click board.

The demo application is composed of two sections :

Application Init

‍Initializes the driver and performs the click default configuration.

void application_init ( void )
{
log_cfg_t log_cfg;
c1wirei2c_cfg_t c1wirei2c_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
c1wirei2c_cfg_setup( &c1wirei2c_cfg );
C1WIREI2C_MAP_MIKROBUS( c1wirei2c_cfg, MIKROBUS_1 );
if ( ONE_WIRE_ERROR == c1wirei2c_init( &c1wirei2c, &c1wirei2c_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( C1WIREI2C_ERROR == c1wirei2c_default_cfg ( &c1wirei2c ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}
@ C1WIREI2C_ERROR
Definition c1wirei2c.h:194
#define C1WIREI2C_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition c1wirei2c.h:134
void application_init(void)
Definition main.c:35

Application Task

‍Reads the temperature measurement from connected Thermo 4 click board and displays the results on the USB UART once per second.

void application_task ( void )
{
float temperature = 0;
uint8_t reg_data[ 2 ] = { 0 };
uint8_t reg_addr = DEVICE_REG_TEMPERATURE;
if ( ( C1WIREI2C_OK == c1wirei2c_write_data ( &c1wirei2c, DEVICE_SLAVE_ADDRESS, &reg_addr, 1 ) ) &&
( C1WIREI2C_OK == c1wirei2c_read_data_stop ( &c1wirei2c, DEVICE_SLAVE_ADDRESS, reg_data, 2 ) ) )
{
temperature = ( ( ( int16_t ) ( ( ( uint16_t ) reg_data[ 0 ] << 8 ) |
reg_data[ 1 ] ) ) >> 5 ) * DEVICE_TEMPERATURE_RES;
log_printf( &logger, "\r\n%s - Temperature: %.3f degC\r\n", ( char * ) DEVICE_NAME, temperature );
}
else
{
log_error( &logger, "%s - no communication!\r\n", ( char * ) DEVICE_NAME );
}
Delay_ms ( 1000 );
}
@ C1WIREI2C_OK
Definition c1wirei2c.h:193
#define DEVICE_TEMPERATURE_RES
Definition main.c:30
void application_task(void)
Definition main.c:71
#define DEVICE_NAME
Definition main.c:27
#define DEVICE_SLAVE_ADDRESS
Definition main.c:28
#define DEVICE_REG_TEMPERATURE
Definition main.c:29

The full application code, and ready to use projects can be installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Other Mikroe Libraries used in the example:

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.1WireI2C

Additional notes and informations

Depending on the development board you are using, you may need USB UART click, USB UART 2 Click or RS232 Click to connect to your PC, for development systems with no UART to USB interface available on the board. UART terminal is available in all MikroElektronika compilers.