AM243x Motor Control SDK  11.00.00
Release Notes 11.00.00

Attention
Please refer to individual module pages for more details on each feature, unsupported features, important usage guidelines.
For release notes of Industrial Communications SDK and MCU+ SDK, please refer to AM243X Industrial Communications SDK Release Notes 11.00.00 and AM243X MCU+ SDK Release Notes 11.00.00 respectively.
Note
  1. In Motor Control SDK 11.00.00 (production package), using the EtherCAT example from Industrial Communications SDK 11.00.00.13 or EtherCAT example for TIDEP-01032 EtherCAT-Connected Single-Chip Dual-Servo Motor Drive Reference Design requires downloading the Beckhoff SSC stack from the ETG website and rebuilding the library as described in the following documentation:
  2. These examples will show usage of SW modules and APIs on a specific CPU instance and OS combination.
    Unless noted otherwise, the SW modules would work in both FreeRTOS and NORTOS environment.
    Unless noted otherwise, the SW modules would work on any of the R5F's present on the SOC.
    Unless noted otherwise, the SW modules would work on all supported EVMs
  3. Tamagawa over SoC UART example is not supported for AM243x.

New in this Release

Feature Module
Dual Arm® Cortex®-R5F core example (1 core for motor control and EtherCAT each) for Dual-Servo Motor Drive reference design based on Universal Motor Control similar to other Sitara™ and C2000™ devices. TIDEP-01032 EtherCAT-Connected Single-Chip Dual-Servo Motor Drive Reference Design
Nikon A-format version 3.0 Position Sense Nikon A-format
Support for up to 8 encoders in bus connection Position Sense Nikon A-format
Refactor the examples, renamed the old example to snoop mode based example and added new examples for shadow mode which does not use snoop mode Current Sense SDFM
Phase Shift Example (PRU Based PWM Control) PRU-ICSS PWM
Enabled configuration of IEP1 independently PRU-ICSS PWM
Time Transmitter Receiver Example Time Sync
Time Receiver Example (Supported only in debug mode) Time Sync
SFRA Library Real Time Libraries
Datalog Library and Example Real Time Libraries
Independent IEP events for each axis in load share mode Position Sense BiSS-C
Independent IEP events for each axis in load share mode Position Sense Nikon A-format
SAMUX mode configuration from SysConfig Position Sense
TX/RX clock source configuration from SysConfig Position Sense
Developer Guides for PRU resource allocation and PRU-ICSSG IO Modes Developer Guides
Debug Guides for different components Developer Guides
SOC Supported CPUs Boards Host PC
AM243x R5F AM243x GP EVM (referred to as am243x-evm in code),
AM243x LAUNCHPAD (referred to as am243x-lp in code)
Windows 10 64b or Ubuntu 18.04 64b

Tools, Compiler and Other Open Source SW Module Information

Tools / SW module Supported CPUs Version
AM243x Industrial Communications SDK R5F 11.00.00.13
AM243x MCU+ SDK R5F, M4F 11.00.00.18
Code Composer Studio R5F, M4F 12.8.1
SysConfig R5F, M4F 1.22.0, build 3893
TI ARM CLANG R5F, M4F 4.1.0.LTS
FreeRTOS Kernel R5F, M4F 11.1.0
Tiny USB R5F 0.14.0
LwIP R5F STABLE-2_2_0_RELEASE
Mbed-TLS R5F mbedtls-2.13.1

Key Features

Current Sense

Module Supported CPUs SysConfig Support OS Support Key features tested Key features not tested
ICSS SDFM R5F YES FreeRTOS, NORTOS Three SDFM channels using single PRU core, Nine SDFM channels using three PRU cores (load share mode), SDFM Sync with EPWM, Single/Double Normal Current Sampling per EPWM cycle, Continuous Normal Current Sampling, High and Low Threshold Comparator (Over-current detction), Fast Detect, Phase Compensation, Zero Cross Detection, Trip Generation using PRU-ICSS TripZone, Tested with SDFM clock from ECAP/IEP, Tested with 5MHz Clock from EPWM -

Position Sense

Module Supported CPUs SysConfig Support OS Support Key features tested Key features not tested
BiSS-C R5F YES FreeRTOS, NORTOS Single channel, Multi channel using single PRU core and three PRU cores (load share mode),point-to-point connection, control communication, automatic processing delay detection and compensation, interface speed of 1, 2, 5, 8, and 10 MHz, long cable (upto 100 meters), continuous mode, BP-AM2BLDCSERVO Boosterpack with LP-AM243 Daisy chaining, safety mode (safety CRC and sign-of-life counter)
EnDat R5F YES FreeRTOS, NORTOS Single channel, Multi channel using single PRU core and three PRU cores (load share mode), recovery time for 2.2 command set, interface speed of 4, 8 and 16 MHz, long cable (upto 100 meters), continuous mode, BP-AM2BLDCSERVO Boosterpack with LP-AM243 Encoder receive communication command
HDSL R5F YES FreeRTOS, NORTOS Single channel, Multi channel using three PRU cores (load share mode), Free Run mode, Sync mode, Short Message Read and Write, Long Message Read and Write, Pipeline Channel Data, Long cable (upto 100 meters) with single channel Free Run mode, BP-AM2BLDCSERVO Boosterpack with LP-AM243, 225 MHz PRU firmware Long cable (upto 100 meters) with sync mode
Nikon A-format R5F YES FreeRTOS, NORTOS Nikon A-format version 2.1 and version 3.0, Single channel, Multi channel using single PRU core and three PRU cores (load share mode), point-to-point connection, bus connection up to 8 encoders, individual and multiple transmission mode with encoder addresses ranging between ENC1-ENC8, baud rates from 2.5 MHz, 4 MHz, 6.67 MHz, 8 MHz, and 16 MHz, up to 40-bit absolute position (single turn + multi turn) data with additional information, long cable (upto 100 meters), continuous mode, BP-AM2BLDCSERVO Boosterpack with LP-AM243 -
Tamagawa R5F YES FreeRTOS, NORTOS Single channel, Multi channel using single PRU core, absolute position, encoder ID, reset, EEPROM read, EEPROM write, 2.5 Mbps Encoder, continuous mode, BP-AM2BLDCSERVO Boosterpack with LP-AM243 5 Mbps encoder

Real Time Libraries

Module Supported CPUs SysConfig Support OS Support Key features tested Key features not tested
Control R5F YES FreeRTOS, NORTOS Field Weakening Control, Maximum Torque Per Ampere, Strator voltage frequency generator support -
Digital Control Library (DCL) R5F YES FreeRTOS, NORTOS Linear PI, Linear PID, Linear PI with double integrator (PI2), Direct Form 1 (first order), Direct Form 1 (second order), Direct Form 1 (third order), Direct Form 2 (second order), Direct Form 2 (third order), Non-linear PID controller -
Observer R5F YES FreeRTOS, NORTOS Sensored eQEP-based encoder, Hall sensor, Sensorless Enhanced Sliding Mode Observer, both speed measurement for sensored (speedcalc) and sensorless (speedfr) -
SFRA R5F YES FreeRTOS, NORTOS Software Frequency Response Analyzer support -
Transforms R5F YES FreeRTOS, NORTOS Clarke transformation, Park transformation, Inverse Park transformation, Space Vector Generation (SVGEN), Common-mode subtraction approach, DPWM Generation (Part of SVGEN), Maximum Modulation, Minimum Modulation, SVGEN current reconstruction for single-shunt (SVGENCURRENT), Phase voltage reconstruction in overmodulation (VOLTS_RECON) -
Utilities R5F YES FreeRTOS, NORTOS Angle Compensation Generator, Step Response, Datalog, Trapezoid generator -

PRU-ICSS PWM

Module Supported CPUs SysConfig Support OS Support Key features tested Key features not tested
PRU-ICSS PWM R5F YES FreeRTOS, NORTOS PWM Duty cycle, PWM Phase shift, PWM Dead band, PWM Period -

TIDEP-01032 EtherCAT-Connected Single-Chip Dual-Servo Motor Drive Reference Design

Module Supported CPUs SysConfig Support OS Support Key features tested Key features not tested
TIDEP-01032 EtherCAT-Connected Single-Chip Dual-Servo Motor Drive Reference Design R5F YES FreeRTOS, NORTOS All build levels, speed control for open loop and closed loop, closed loop with EtherCAT Distributed Clock (DC) mode -

Timesync

Module Supported CPUs SysConfig Support OS Support Key features tested Key features not tested
Timesync R5F YES FreeRTOS Tested with two board setup: board 1 running time_sync_transmitter_receiver example and board 2 running time_receiver example at 100us cycle time Not tested time_receiver example in release mode

Fixed Issues

ID Head Line Module Applicable Releases Resolution/Comments
PINDSW-5537 HDSL not working with 225 MHz PRU-ICSSG Core Clock Frequency Position Sense HDSL 9.0 onwards -
PINDSW-6544 SDFM: Incorrect samples seen intermittently with EPWM as SDFM clock Current Sense SDFM 9.0 onwards Use new example with shadow register based normal current sampling. This is a limitation of snoop mode based normal current sampling.
PINDSW-7976 PRUICSS PWM : validation of number of pwm channels and pwm trip zone blocks are not correct in sysconfig PRUICSS PWM 9.1 onwards -
PINDSW-8042 ReferenceDesign: Firmware binary path included multiple times Reference Design 9.0 onwards -
PINDSW-8087 Tamagawa: UART clock source is used for TX fifo Position Sense Tamagawa 9.0 onwards -
PINDSW-8220 Endat: Initialization clock is not 200 kHz when the clock source does not run at 192 MHz Position Sense EnDat 9.0 onwards -
PINDSW-8399 EnDat: Implement the recovery time as specified in section 3.3 of "Heidenhain Document D1128897-03-A-02.8: Safety with EnDat 2.2 and Non-Safe EnDat Master" Position Sense EnDat 9.0 onwards -
PINDSW-8415 SDFM: Incorrect samples observed when individual clock option is used Current Sense SDFM 9.0 onwards Use new example with shadow register based normal current sampling. This is a limitation of snoop mode based normal current sampling.
PINDSW-8564 EnDat: endat_recvd_process function does not handle when different types of encoders are connected Position Sense EnDat 9.0 onwards -
PINDSW-9123 Nikon: Data reversal not done correctly for EEPROM and ID commands Position Sense Nikon A-format 9.2 onwards Fixes done in nikon_update_eeprom_addr, nikon_update_eeprom_data, nikon_update_id_code and nikon_get_pos
PINDSW-9124 Nikon: Data reversal not done correctly for encoder status received in response Position Sense Nikon A-format 9.2 onwards Fixes done in nikon_get_pos
PINDSW-9127 Nikon: For commands 8 to 12, 9 requests are sent instead of 8 Position Sense Nikon A-format 9.2 onwards Fixes done in nikon_get_pos
PINDSW-9128 Nikon: For EEPROM commands, request is sent 2 times from firmware Position Sense Nikon A-format 9.2 onwards Fixes done in nikon_get_pos, and updates in the application code for EEPROM command handling
PINDSW-9131 Nikon: EEPROM read for temperature does not use 10 bit data Position Sense Nikon A-format 9.2 onwards Fixes done in nikon_get_pos, and updated the application code for EEPROM command handling
PINDSW-9144 Nikon: For EEPROM/ID commands, same data is used for all channels in multi-channel mode Position Sense Nikon A-format 9.2 onwards Added provision for different address/data per channel
PINDSW-9154 Nikon: CRC error seen with 16 Mbps in Single PRU Multi-channel mode Position Sense Nikon A-format 9.2 onwards -
PINDSW-9180 Nikon: 10 us delay between CDF-MDF and MDF-MDF is used for commands needing MDF Position Sense Nikon A-format 9.2 onwards -
PINDSW-9238 Nikon: IEP compare value is not set correctly for continuous mode Position Sense Nikon A-format 9.2 onwards Change the units to IEP clock cycle count
PINDSW-9239 Nikon: nikon_config_periodic_trigger assumes fixed receive size of response Position Sense Nikon A-format 9.2 onwards Remove receive size hard-coding in driver
PINDSW-9248 EnDat: RX arm delay and TST delay settings are hard-coded for a 200 MHz core clock Position Sense EnDat 9.2 onwards -
PINDSW-9255 Nikon: If Debug log/scan is removed and encoder resolution is fixed in application code, initialization fails Position Sense Nikon A-format 9.2 onwards Add 0.5 seconds delay in application after powering up the encoder
PINDSW-9292 SDFM: Fast Detect only works if the Fast Detect option is enabled for channel 0 Current Sense SDFM 9.0 onwards -
PINDSW-9312 Nikon: Data type of velocity and acceleration is unsigned integer Position Sense Nikon A-format 9.2 onwards -
PINDSW-9317 BiSS-C: bissc_update_data_len does not set number of encoders correctly Position Sense BiSS-C 9.2 onwards -
PINDSW-9385 EnDat: Recovery time does not work with EnDat 2.2 supplementary commands for certain EnDat frequencies Position Sense EnDat 9.2 onwards -
PINDSW-9406 EnDat/Nikon: Channel 2 does not work on PRU Slice 0 in load share mode Position Sense EnDat, Position Sense Nikon 9.0 onwards -
PINDSW-9501 BiSS-C/Nikon: Synchronization in load share fails in certain cases due to race condition Position Sense BiSS-C, Position Sense Nikon 9.1 onwards -

Known Issues

ID Head Line Module Applicable Releases Workaround
PINDSW-6486 HDSL: RSSI register shows higher values than expected for a non-noisy setup Position Sense HDSL 9.0 onwards -
PINDSW-7130 HDSL: Few protocol resets seen during initialization with Free Run mode on LP-AM243 Position Sense HDSL 9.0 onwards -
PINDSW-7163 HDSL: Trailer data contains 4 zeros instead of 5 Position Sense HDSL 9.0 onwards -
PINDSW-7474 HDSL: Sync mode does not work 100m long cable Position Sense HDSL 9.0 onwards -
PINDSW-9179 Nikon: PRU Firmware gets stuck if encoder does not respond with number of bytes expected by driver Position Sense Nikon A-format 9.2 onwards -

Limitations

Attention
Please refer to individual module pages for more details on known limitations and unsupported features.
ID Head Line Module Reported in Release Applicable Devices Workaround
MCUSDK-208 gmake with -j can sometimes lock up Windows command prompt Build 7.3.0 onwards AM64x, AM243x Use bash for windows as part of git for windows or don't use -j option

Upgrade and Compatibility Information for Motor Control SDK 11.00.00

Attention
When migrating from MCU+ SDK, see Migration Guide for more details.

This section lists changes which could affect user applications developed using older SDK versions. Read this carefully to see if you need to do any changes in your existing application when migrating to this SDK version relative to previous SDK version. Also refer to older SDK version release notes to see changes in earlier SDKs.

Examples

Module Affected API Change Additional Remarks
Current Sense SDFM SdfmPrms_s Added variable: snoopModeEnable -
Example icss_sdfm_nine_channel_load_share_snoop_mode Renamed the example name from icss_sdfm_nine_channel_load_share_mode to icss_sdfm_nine_channel_load_share_snoop_mode, Changed the INTC mapping between host channels and PRU events This change identifies the sampling mode between Normal mode and Snoop mode. INTC mapping info is available at SDFM INTC Mapping
Example icss_sdfm_three_channel_single_pru_snoop_mode Renamed the example name from icss_sdfm_three_channel_single_pru_mode to icss_sdfm_three_channel_single_pru_snoop_mode, Changed the INTC mapping between host channel and PRU event This change identifies the sampling mode between Normal mode and Snoop mode. INTC mapping info is available at SDFM INTC Mapping
Example icss_sdfm_nine_channel_load_share_mode Normal mode for sampling is used To demonstrate shadow mode-based sampling, it uses Normal mode for sampling.
Example icss_sdfm_nine_channel_with_continuous_mode Made Normal mode the default mode for sampling, and individual interrupt is used for all channels Updated the callback function to read sample data. INTC mapping info is available at SDFM INTC Mapping
Example icss_sdfm_three_channel_single_pru_mode Normal mode for sampling is used To demonstrate shadow mode-based sampling, it uses Normal mode for sampling.
Example icss_sdfm_three_channel_with_continuous_mode Made Normal mode the default mode for sampling, and individual interrupt is used for all channels Updated the callback function to read sample data. INTC mapping info is available at SDFM INTC Mapping
Example icss_sdfm_three_channel_with_phase_compensation Made Normal mode the default mode for sampling, Changed the INTC mapping between host channel and PRU event INTC mapping info is available at SDFM INTC Mapping
Position Sense BiSS-C bissc_process_periodic_command() Updated input parameters for the API cmp0 -> iep_reset_count, cmp3 -> ch0_trigger_count and added new parameters ch1_trigger_count, ch2_trigger_count Change affects multi channel load share example
bissc_periodic_interface_init() Updated input parameters for the API cmp0 -> iep_reset_count, cmp3 -> ch0_trigger_count and added new parameters ch1_trigger_count, ch2_trigger_count Change affects multi channel load share example
structure bissc_periodic_interface updated parameters for the structure cmp0 -> iep_reset_count, cmp3 -> ch0_trigger_count and added new parameters ch1_trigger_count, ch2_trigger_count Change affects multi channel load share example
pruBisscIrqHandler() Updated API name Change affects multi channel load share example
txpruBisscIrqHandler() Added new API Method for handling interrupt from txpru Change affects multi channel load share example
rtuBisscIrqHandler() Added new API Method for handling interrupt from rtu Change affects multi channel load share example
PRU_TRIGGER_HOST_EVT,RTU_TRIGGER_HOST_EVT,TXPRU_TRIGGER_HOST_EVT Updated PRU_TRIGGER_HOST_BISSC_EVT0,PRU_TRIGGER_HOST_BISSC_EVT1,PRU_TRIGGER_HOST_BISSC_EVT2 host event macro names Change affects multi channel load share example
Position Sense Endat structure endat_periodic_interface Renamed the cmp event variables Renamed variables: cmp0 to cmp0_count, cmp3 to ch0_trigger_count, cmp5 to ch1_trigger_count, and cmp6 to ch2_trigger_count
Firmware binary files Renamed all binary files Used encoder_receiver inclusive term
Position Sense Nikon A-format nikon_process_periodic_command() Updated input parameters for the API cmp0 -> iep_reset_count, cmp3 -> ch0_trigger_count & added new parameters ch1_trigger_count & ch2_trigger_count Change affects multi channel load share example
nikon_periodic_interface_init() Updated input parameters for the API cmp0 -> iep_reset_count, cmp3 -> ch0_trigger_count & added new parameters ch1_trigger_count & ch2_trigger_count Change affects multi channel load share example
structure nikon_periodic_interface updated parameters for the structure cmp0 -> iep_reset_count, cmp3 -> ch0_trigger_count & added new parameters ch1_trigger_count & ch2_trigger_count Change affects multi channel load share example
pru_nikon_irq_handler() Updated API name Change affects multi channel load share example
txpru_nikon_irq_handler() Added new API Method for handling interrupt from txpru Change affects multi channel load share example
rtu_nikon_irq_handler() Added new API Method for handling interrupt from rtu Change affects multi channel load share example
PRU_TRIGGER_HOST_EVT,RTU_TRIGGER_HOST_EVT,TXPRU_TRIGGER_HOST_EVT Updated PRU_TRIGGER_HOST_NIKON_EVT0,PRU_TRIGGER_HOST_NIKON_EVT1,PRU_TRIGGER_HOST_NIKON_EVT2 host event macro names Change affects multi channel load share example
Multiple variables Refactor code to avoid unsigned to signed and signed to unsigned conversion -
Position Sense Tamagawa Firmware binary files Renamed all binary files Used encoder_receiver inclusive term
structure tamagawa_periodic_interface Renamed the cmp event variables Renamed variables: cmp0 to iep_reset_count, cmp3 to periodic_trigger_count
Real Time Libraries - Moved examples/dcl, examples/sfra, examples/transforms, examples/utilities to examples/rtlibs folder All examples using Real Time Libraries are updated to use new path
Reference Design Project for TIDEP-01032 EtherCAT-Connected Single-Chip Dual-Servo Motor Drive Reference Design Refactored the software and FOC implementation based on universal motor control, similar to other Sitara™ and C2000™ devices. -

Drivers

Module Affected API or structure Change Additional Remarks
Current Sense SDFM SDFM_Ctrl Added variable: sdfm_en_snoop_nc -
SDFM_setFilterOverSamplingRatio Added input parameter: channel Take current channel number as input parameter
Position Sense BiSS-C structure bissc_priv Added variable tx_rx_clock_source Needed for configuring clock source selection
API bissc_init Added input parameter tx_rx_clock_source Needed for configuring clock source selection
Position Sense Endat structure endat_priv Added new variables: pru_uart_clock, pru_clock, rx_clock_source and tx_clock_source -
structure endat_init Added new parameter: endat_clock_config -
structure endat_priv Renamed variables: cmp0 to iep_reset_count, cmp3 to ch0_trigger_count, cmp5 to ch1_trigger_count, and cmp6 to ch2_trigger_count -
structure cmd_supplement Renamed variables: cmp0 to iep_reset_count, cmp3 to ch0_trigger_count, cmp5 to ch1_trigger_count, and cmp6 to ch2_trigger_count -
structure Endat_ChRxInfo Added new variables: struct Endat_ChRTInfo and Removed variables: resvdInt2, resvdInt3 and recoveryTime -
structure pruss_xchg Added new variables: enableRTM -
Position Sense Nikon A-format structure pos_data_info Added variables raw_data4, raw_data5, velocity and acc Needed for Nikon A-format version 3.0
structure alm_bits Added variables ov_spd_s, st_err_s, ps_err_s, busy_s and inc_err_s Needed for Nikon A-format version 3.0
structure alm_bits Updated variable inc_err's name to inc_err Updated as per Nikon A-format version 3.0
structure nikon_priv Added parameters tx_rx_clock_source and protocol_version Needed for configuring clock source selection and specifying protocol version respectively
structure nikon_priv Updated parameter tx_mdf

Updated the variable type from uint32_t to 2D array of type uint32_t to store different tx_mdf data for each channel and each MDF

structure nikon_priv Updated parameter mem_data Updated the variable type from 1D array of type uint32_t to 2D array of type uint32_t to store different mem_data data for each channel and each MDF
structure nikon_priv Added variable velocity_coefficient, pm_alm_field, and bank_error Needed for Nikon A-format version 3.0
API nikon_init Added input parameters tx_rx_clock_source and protocol_version Needed for configuring clock source selection and specifying protocol version respectively
structure nikon_pruicss_xchg Updated parameter mdf_frame Updated the variable type from 1D array of type uint32_t to 2D array of type uint32_t to store different mdf_frame data for each channel and each MDF
structure nikon_pruicss_xchg Added parameter num_mdf It stores the number of MDFs to be sent
structure nikon_pruicss_xchg Removed delay_300us, delay_30ms, delay_10us and added delay_1us 300 us, 30 ms and 10 us delay values are not needed in firmware. 1 us is needed for delay between CDF and MDFs.
structure nikon_pruicss_xchg Renamed variable icssg_clk to icss_clk -
API nikon_get_pos CRC is not removed while copying data into last raw data byte for all commands (priv->pos_data_info[ch].raw_data<x>[enc_num]) -
APIs nikon_get_pos, nikon_init, nikon_generate_cdf, nikon_reverse_bits, nikon_config_load_share Refactor code to avoid unsigned to signed and signed to unsigned conversion. Update the data type of function arguments. -
APIs nikon_update_eeprom_addr, nikon_update_eeprom_data, nikon_update_id_code Add channel as function argument, and update the data type based on bit width needed for address, data, and ID code -
Position Sense Tamagawa tamagawa_priv Added new variable: pru_clock -
tamagawa_clk_cfg Added new variables: rx_clk_source, tx_clk_source and rx_os_rate -
tamagawa_priv Added new variables: pru_uart_clock, rx_clock_source" andtx_clock_source`

-

tamagawa_priv Renamed variables: cmp0 to iep_reset_count, cmp3 to periodic_trigger_count -
PRUICSS PWM structure PRUICSS_PWM_IEP_Attrs_s Added variables : iep1IncrementValue, enableIep1, enableIep1ResetOnEpwm0_Sync, enableIep1ResetOnEpwm3_Sync, enableIep1ResetOnCompare0, enableIEP1ShadowMode -
API PRUICSS_PWM_iepConfig Updated definition enabling configuration of IEP1 independently -
Real Time Libraries - Moved source/control, source/dcl, source/observers, source/sfra, source/transforms, source/utilities to source/rtlibs folder All examples using Real Time Libraries are updated to use new path
Note
Arm is a registered trademark of Arm Limited (or its subsidiaries or affiliates) in the US and/or elsewhere.