usbcsource  2.0.0.0
Main Page

USB-C Source click

USB-C Source Click is a compact add-on board that contains a standalone autonomous USB power delivery controller. This board features the STUSB4700, an independent USB power delivery controller optimized as a provider to negotiate a given amount of power to be sourced to an inquiring consumer device from STMicroelectronics.

click Product page


Click library

  • Author : Stefan Ilic
  • Date : Aug 2021.
  • Type : I2C type

Software Support

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

Standard key functions :

Example key functions :

Example Description

This is an example that demonstrates the use of the USB-C Source Click board.

The demo application is composed of two sections :

Application Init

Initialization driver enables - I2C, set hardware reset and default configuration and display configuration of the five PDOs, also write log.

void application_init ( void ) {
log_cfg_t log_cfg;
usbcsource_cfg_t usbcsource_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
usbcsource_cfg_setup( &usbcsource_cfg );
USBCSOURCE_MAP_MIKROBUS( usbcsource_cfg, MIKROBUS_1 );
err_t init_flag = usbcsource_init( &usbcsource, &usbcsource_cfg );
if ( I2C_MASTER_ERROR == init_flag ) {
log_error( &logger, " Application Init Error. " );
log_info( &logger, " Please, run program again... " );
for ( ; ; );
}
usbcsource_hw_reset( &usbcsource );
Delay_ms( 500 );
usbcsource_default_config( &usbcsource );
Delay_ms( 500 );
log_printf( &logger, "- - - - - - - - - - - - - -\r\n" );
log_printf( &logger, " PDO 1 - Voltage = %.2f V \r\n", pdo_data.vtg_data );
log_printf( &logger, " PDO 1 - Current = %.2f A \r\n", pdo_data.curr_data );
log_printf( &logger, "- - - - - - - - - - - - - -\r\n" );
log_printf( &logger, " PDO 2 - Voltage = %.2f V \r\n", pdo_data.vtg_data );
log_printf( &logger, " PDO 2 - Current = %.2f A \r\n", pdo_data.curr_data );
log_printf( &logger, "- - - - - - - - - - - - - -\r\n" );
log_printf( &logger, " PDO 3 - Voltage = %.2f V \r\n", pdo_data.vtg_data );
log_printf( &logger, " PDO 3 - Current = %.2f A \r\n", pdo_data.curr_data );
log_printf( &logger, "- - - - - - - - - - - - - -\r\n" );
log_printf( &logger, " PDO 4 - Voltage = %.2f V \r\n", pdo_data.vtg_data );
log_printf( &logger, " PDO 4 - Current = %.2f A \r\n", pdo_data.curr_data );
log_printf( &logger, "- - - - - - - - - - - - - -\r\n" );
log_printf( &logger, " PDO 5 - Voltage = %.2f V \r\n", pdo_data.vtg_data );
log_printf( &logger, " PDO 5 - Current = %.2f A \r\n", pdo_data.curr_data );
log_printf( &logger, "- - - - - - - - - - - - - -\r\n" );
log_info( &logger, " Application Task " );
}

Application Task

In this example, we show port status, monitoring, and connections. All data logs write on USB uart changes every 5 sec.

void application_task ( void ) {
Delay_ms( 100 );
log_printf( &logger, "- - - - - - - - - - - - - - " );
log_printf( &logger, "- - - - - - - - - - - - - -\r\n" );
Delay_ms( 100 );
log_printf( &logger, "- - - - - - - - - - - - - - " );
log_printf( &logger, "- - - - - - - - - - - - - -\r\n" );
Delay_ms( 100 );
log_printf( &logger, "- - - - - - - - - - - - - - " );
log_printf( &logger, "- - - - - - - - - - - - - -\r\n" );
Delay_ms( 5000 );
}

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

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.


usbcsource_default_config
void usbcsource_default_config(usbcsource_t *ctx)
Default configuration function.
display_monitoring_status
void display_monitoring_status(void)
USB-C Source display monitoring status.
Definition: main.c:207
usbcsource_get_port_status
void usbcsource_get_port_status(usbcsource_t *ctx, port_status_t *port_status_data)
Get port status function.
usbcsource_t
USB-C Source Click context object.
Definition: usbcsource.h:253
USBCSOURCE_MAP_MIKROBUS
#define USBCSOURCE_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: usbcsource.h:240
monitor_status
monitor_status_t monitor_status
Definition: main.c:35
display_port_status
void display_port_status(void)
USB-C Source display port status.
Definition: main.c:148
USBCSOURCE_SEL_PDO4
#define USBCSOURCE_SEL_PDO4
Definition: usbcsource.h:104
pdo_config_t::vtg_data
float vtg_data
Definition: usbcsource.h:375
usbcsource_hw_reset
void usbcsource_hw_reset(usbcsource_t *ctx)
HW reset function.
usbcsource_init
err_t usbcsource_init(usbcsource_t *ctx, usbcsource_cfg_t *cfg)
USB-C Source initialization function.
application_task
void application_task(void)
Definition: main.c:119
alert_status_t
USB-C Source Click alert status object.
Definition: usbcsource.h:290
pdo_config_t::curr_data
float curr_data
Definition: usbcsource.h:376
USBCSOURCE_SEL_PDO1
#define USBCSOURCE_SEL_PDO1
USB-C Source description setting.
Definition: usbcsource.h:101
usbcsource_get_pdo_config
uint8_t usbcsource_get_pdo_config(usbcsource_t *ctx, uint8_t pdo_numb, pdo_config_t *pdo_cfg_data)
Get PDO configuration function.
display_connection_status
void display_connection_status(void)
USB-C Source display connection status.
Definition: main.c:230
pdo_data
pdo_config_t pdo_data
Definition: main.c:37
conn_status
connection_status_t conn_status
Definition: main.c:36
usbcsource_get_alert_status
void usbcsource_get_alert_status(usbcsource_t *ctx, alert_status_t *alert_status_data)
Get alert status function.
USBCSOURCE_SEL_PDO3
#define USBCSOURCE_SEL_PDO3
Definition: usbcsource.h:103
application_init
void application_init(void)
Definition: main.c:57
usbcsource_set_pdo_config
uint8_t usbcsource_set_pdo_config(usbcsource_t *ctx, pdo_config_t pdo_cfg_data)
Set PDO configuration function.
USBCSOURCE_SEL_PDO5
#define USBCSOURCE_SEL_PDO5
Definition: usbcsource.h:105
pdo_config_t
USB-C Source Click PDO config object.
Definition: usbcsource.h:364
usbcsource_get_monitoring_status
void usbcsource_get_monitoring_status(usbcsource_t *ctx, monitor_status_t *monitor_status_data)
Get monitoring status function.
port_status
port_status_t port_status
Definition: main.c:34
usbcsource_cfg_setup
void usbcsource_cfg_setup(usbcsource_cfg_t *cfg)
USB-C Source configuration object setup function.
USBCSOURCE_SEL_PDO2
#define USBCSOURCE_SEL_PDO2
Definition: usbcsource.h:102
usbcsource_get_connection_status
void usbcsource_get_connection_status(usbcsource_t *ctx, connection_status_t *conn_data)
Get connection status function.
usbcsource_cfg_t
USB-C Source Click configuration object.
Definition: usbcsource.h:273