clickid  2.1.0.0
Main Page

ClickID

Hardware and software solution based on a secure authenticator device (EEPROM) that enables the hot-plugging of peripheral add-on Click Boards™ to any mikroBUS™ compatible system.

Product page


Library

  • Author : Stefan Filipovic
  • Date : Aug 2023.
  • Type : One Wire type

Software Support

We provide a library for the ClickID 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 ClickID driver.

Standard key functions :

Example key functions :

  • clickid_check_communication This function checks the communication by reading the ROM address as well as verifying family code and CRC 8.
  • clickid_read_memory This function reads a desired number of data bytes starting from the selected address of the EEPROM memory using One Wire communication protocol.
    err_t clickid_read_memory ( clickid_t *ctx, uint16_t address, uint8_t *data_out, uint16_t len );
  • clickid_read_information This function reads the click board information from the permanent data memory.

Example Description

This example reads the information from ClickID permanent memory.

The demo application is composed of two sections :

Application Init

Initializes the driver and checks the communication with the click board.

void application_init ( void )
{
log_cfg_t log_cfg;
clickid_cfg_t clickid_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// ClickID initialization.
clickid_cfg_setup( &clickid_cfg );
CLICKID_MAP_MIKROBUS( clickid_cfg, MIKROBUS_1 );
if ( ONE_WIRE_ERROR == clickid_init( &clickid, &clickid_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
{
log_error( &logger, " Communication fail." );
log_printf( &logger, "Check if the click is attached to the correct " );
log_printf( &logger, "MIKROBUS socket, and try again.\r\n" );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}

Application Task

Reads the information from ClickID permanent manifest every 5 seconds.

void application_task ( void )
{
if ( CLICKID_OK == clickid_read_information ( &clickid, &info ) )
{
log_printf ( &logger, "\r\n --- Click info ---\r\n" );
log_printf ( &logger, " Name: %s\r\n", info.name );
log_printf ( &logger, " PID: MIKROE-%u\r\n", info.serial );
log_printf ( &logger, " HW REV.: %u.%.2u\r\n",
( uint16_t ) info.hw_rev.major, ( uint16_t ) info.hw_rev.minor );
log_printf ( &logger, " Type: 0x%.4X\r\n", info.type );
log_printf ( &logger, " Custom: 0x%.2X\r\n", ( uint16_t ) info.custom );
}
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}

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.ClickID

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.


clickid_information_t
ClickID information.
Definition: clickid.h:152
clickid_cfg_t
ClickID configuration object.
Definition: clickid.h:182
CLICKID_OK
@ CLICKID_OK
Definition: clickid.h:197
clickid_version_t::minor
uint8_t minor
Definition: clickid.h:143
CLICKID_MAP_MIKROBUS
#define CLICKID_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: clickid.h:129
clickid_cfg_setup
void clickid_cfg_setup(clickid_cfg_t *cfg)
ClickID configuration object setup function.
clickid_check_communication
err_t clickid_check_communication(clickid_t *ctx)
ClickID check communication function.
clickid_read_memory
err_t clickid_read_memory(clickid_t *ctx, uint16_t address, uint8_t *data_out, uint16_t len)
ClickID read memory function.
clickid_information_t::custom
uint8_t custom
Definition: clickid.h:156
application_task
void application_task(void)
Definition: main.c:65
clickid_information_t::hw_rev
clickid_version_t hw_rev
Definition: clickid.h:153
clickid_information_t::name
uint8_t name[20]
Definition: clickid.h:157
CLICKID_ERROR
@ CLICKID_ERROR
Definition: clickid.h:198
clickid_information_t::type
uint16_t type
Definition: clickid.h:155
clickid_read_information
err_t clickid_read_information(clickid_t *ctx, clickid_information_t *info)
ClickID read information function.
clickid_information_t::serial
uint16_t serial
Definition: clickid.h:154
clickid_version_t::major
uint8_t major
Definition: clickid.h:142
clickid_init
err_t clickid_init(clickid_t *ctx, clickid_cfg_t *cfg)
ClickID initialization function.
application_init
void application_init(void)
Definition: main.c:27
clickid_t
ClickID context object.
Definition: clickid.h:166