xsensmti3  2.0.0.0
Main Page

XSENS MTi-3 click

XSENS MTi-3 Click is a compact add-on board that contains a fully functional module that can be configured as an Inertial Measurement Unit, Vertical reference Unit, or even an Attitude & Heading Reference System. This board features the MTi-3, a module outputting 3D orientation, 3D rate of turn, 3D accelerations, and 3D magnetic field, depending on the product configuration from Xsens.

click Product page


Click library

  • Author : Mikroe Team
  • Date : Sep 2021.
  • Type : UART type

Software Support

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

Standard key functions :

Example key functions :

Example Description

This example reads and processes data from XSENS MTi-3 clicks.

The demo application is composed of two sections :

Application Init

Initializes driver and wake-up module.

void application_init ( void )
{
log_cfg_t log_cfg;
xsensmti3_cfg_t xsensmti3_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
xsensmti3_cfg_setup( &xsensmti3_cfg );
XSENSMTI3_MAP_MIKROBUS( xsensmti3_cfg, MIKROBUS_1 );
if ( UART_ERROR == xsensmti3_init( &xsensmti3, &xsensmti3_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}

Application Task

Reads the received data and parses it. Shows Roll, Pitch and Yaw data.

void application_task ( void )
{
uint8_t check_data = 0;
uint8_t cnt = 0;
xsensmti3_process( );
// STARTS COLLECTING DATA
if ( active_flag == XSENSMTI3_WAIT_FOR_START )
{
memset( &current_parser_buf[ 0 ], 0 , PROCESS_PARSER_BUFFER_SIZE );
parser_buf_cnt = 0;
active_flag = 0;
start_rsp = 0;
rsp_cnt = 0;
active_flag = XSENSMTI3_START_PROCESS;
}
if ( ( parser_buf_cnt > 100 ) && ( active_flag == XSENSMTI3_START_PROCESS ) )
{
}
if ( active_flag == XSENSMTI3_DATA_PROCESSING )
{
check_data = xsensmti3_check_package( &current_parser_buf[ 0 ], &start_rsp );
if ( check_data == XSENSMTI3_OK )
{
active_flag = XSENSMTI3_PARSER_DATA;
}
else
{
active_flag = XSENSMTI3_WAIT_FOR_START;
}
}
if ( active_flag == XSENSMTI3_PARSER_DATA )
{
xsensmti3_parser( &current_parser_buf[ 0 ], start_rsp, &parse_data_obj );
log_printf( &logger, ">> Quaternion data <<\r\n" );
for ( cnt = 0; cnt < 4; cnt++ )
{
log_printf( &logger, ">> Q: %f\r\n", parse_data_obj.quat_obj.quat_data[ cnt ] );
}
log_printf( &logger, "--------------\r\n" );
xsensmti3_get_data( &parse_data_obj.quat_obj, &data_obj );
log_printf( &logger, ">> ROLL: %.4f \r\n", data_obj.roll );
log_printf( &logger, ">> PITCH: %.4f \r\n", data_obj.pitch );
log_printf( &logger, ">> YAW: %.4f \r\n", data_obj.yaw );
active_flag = XSENSMTI3_WAIT_FOR_START;
log_printf( &logger, "--------------\r\n" );
}
}

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

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.


xsensmti3_parse_t
Click parse structure definition.
Definition: xsensmti3.h:199
xsensmti3_parser
void xsensmti3_parser(uint8_t *rsp_buf, uint8_t start_cnt, xsensmti3_parse_t *obj)
XSENS MTi-3 general parser.
XSENSMTI3_MAP_MIKROBUS
#define XSENSMTI3_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: xsensmti3.h:102
application_task
void application_task(void)
Definition: main.c:80
XSENSMTI3_PARSER_DATA
#define XSENSMTI3_PARSER_DATA
Definition: xsensmti3.h:76
xsensmti3_quat_t
Click quat structure definition.
Definition: xsensmti3.h:168
xsensmti3_check_package
err_t xsensmti3_check_package(uint8_t *package_buf, uint8_t *start_package)
XSENS MTi-3 checks package.
xsensmti3_data_t
Click roll/pitch/yaw structure definition.
Definition: xsensmti3.h:213
PROCESS_PARSER_BUFFER_SIZE
#define PROCESS_PARSER_BUFFER_SIZE
Definition: main.c:28
XSENSMTI3_START_PROCESS
#define XSENSMTI3_START_PROCESS
Definition: xsensmti3.h:74
xsensmti3_get_data
void xsensmti3_get_data(xsensmti3_quat_t *quat_obj, xsensmti3_data_t *data_obj)
XSENS MTi-3 get Roll, Pitch and Yaw.
xsensmti3_cfg_setup
void xsensmti3_cfg_setup(xsensmti3_cfg_t *cfg)
XSENS MTi-3 configuration object setup function.
XSENSMTI3_OK
@ XSENSMTI3_OK
Definition: xsensmti3.h:226
application_init
void application_init(void)
Definition: main.c:50
XSENSMTI3_DATA_PROCESSING
#define XSENSMTI3_DATA_PROCESSING
Definition: xsensmti3.h:75
XSENSMTI3_WAIT_FOR_START
#define XSENSMTI3_WAIT_FOR_START
XSENS MTi-3 control commands.
Definition: xsensmti3.h:73
xsensmti3_init
err_t xsensmti3_init(xsensmti3_t *ctx, xsensmti3_cfg_t *cfg)
XSENS MTi-3 initialization function.
xsensmti3_t
XSENS MTi-3 Click context object.
Definition: xsensmti3.h:119
xsensmti3_cfg_t
XSENS MTi-3 Click configuration object.
Definition: xsensmti3.h:143