TIDUF67 April   2024

 

  1.   1
  2.   Description
  3.   Resources
  4.   Features
  5.   Applications
  6.   6
  7. 1System Description
    1. 1.1 Terminology
    2. 1.2 Key System Specifications
  8. 2System Overview
    1. 2.1 Block Diagram
    2. 2.2 Highlighted Products
      1. 2.2.1 AM263x Microcontrollers
        1. 2.2.1.1 TMDSCNCD263
        2. 2.2.1.2 LP-AM263
  9. 3System Design Theory
    1. 3.1 Three-Phase PMSM Drive
      1. 3.1.1 Mathematical Model and FOC Structure of PMSM
      2. 3.1.2 Field Oriented Control of PM Synchronous Motor
        1. 3.1.2.1 The ( a ,   b ) ⇒ ( α , β ) Clarke Transformation
        2. 3.1.2.2 The α , β ⇒ ( d ,   q ) Park Transformation
        3. 3.1.2.3 The Basic Scheme of FOC for AC Motor
        4. 3.1.2.4 Rotor Flux Position
      3. 3.1.3 Sensorless Control of PM Synchronous Motor
        1. 3.1.3.1 Enhanced Sliding Mode Observer With Phase Locked Loop
          1. 3.1.3.1.1 Design of ESMO for PMSM
          2. 3.1.3.1.2 Rotor Position and Speed Estimation with PLL
      4. 3.1.4 Hardware Prerequisites for Motor Drive
      5. 3.1.5 Additional Control Features
        1. 3.1.5.1 Field Weakening (FW) and Maximum Torque Per Ampere (MTPA) Control
        2. 3.1.5.2 Flying Start
  10. 4Hardware, Software, Testing Requirements, and Test Results
    1. 4.1 Hardware Requirements
    2. 4.2 Software Requirements
      1. 4.2.1 Importing and Configuring Project
      2. 4.2.2 Project Structure
      3. 4.2.3 Lab Software Overview
    3. 4.3 Test Setup
      1. 4.3.1 LP-AM263 Setup
      2. 4.3.2 BOOSTXL-3PHGANINV Setup
      3. 4.3.3 TMDSCNCD263 Setup
      4. 4.3.4 TMDSADAP180TO100 Setup
      5. 4.3.5 TMDSHVMTRINSPIN Setup
    4. 4.4 Test Results
      1. 4.4.1 Level 1 Incremental Build
        1. 4.4.1.1 Build and Load Project
        2. 4.4.1.2 Setup Debug Environment Windows
        3. 4.4.1.3 Run the Code
      2. 4.4.2 Level 2 Incremental Build
        1. 4.4.2.1 Build and Load Project
        2. 4.4.2.2 Setup Debug Environment Windows
        3. 4.4.2.3 Run the Code
      3. 4.4.3 Level 3 Incremental Build
        1. 4.4.3.1 Build and Load Project
        2. 4.4.3.2 Setup Debug Environment Windows
        3. 4.4.3.3 Run the Code
      4. 4.4.4 Level 4 Incremental Build
        1. 4.4.4.1 Build and Load Project
        2. 4.4.4.2 Setup Debug Environment Windows
        3. 4.4.4.3 Run the Code
    5. 4.5 Adding Additional Functionality to Motor Control Project
      1. 4.5.1 Using DATALOG Function
      2. 4.5.2 Using PWMDAC Function
      3. 4.5.3 Adding CAN Functionality
      4. 4.5.4 Adding SFRA Functionality
        1. 4.5.4.1 Principle of Operation
        2. 4.5.4.2 Object Definition
        3. 4.5.4.3 Module Interface Definition
        4. 4.5.4.4 Using SFRA
    6. 4.6 Building a Custom Board
      1. 4.6.1 Building a New Custom Board
        1. 4.6.1.1 Hardware Setup
        2. 4.6.1.2 Migrating Reference Code to a Custom Board
          1. 4.6.1.2.1 Setting Hardware Board Parameters
          2. 4.6.1.2.2 Modifying Motor Control Parameters
          3. 4.6.1.2.3 Changing Pin Assignment
          4. 4.6.1.2.4 Configuring the PWM Module
          5. 4.6.1.2.5 Configuring the ADC Module
          6. 4.6.1.2.6 Configuring the CMPSS Module
  11. 5General Texas Instruments High Voltage Evaluation (TI HV EVM) User Safety Guidelines
  12. 6Design and Documentation Support
    1. 6.1 Design Files
      1. 6.1.1 Schematics
      2. 6.1.2 BOM
      3. 6.1.3 PCB Layout Recommendations
        1. 6.1.3.1 Layout Prints
    2. 6.2 Tools and Software
    3. 6.3 Documentation Support
    4. 6.4 Support Resources
    5. 6.5 Trademarks
  13. 7About the Author

Using DATALOG Function

The DATALOG module stores the real-time values of user selectable software variables (by default four variables) in the data RAM provided on the TI MCU as shown in Figure 4-29. The four variables are selected by configuring the module inputs to the address of the four variables. The starting addresses of the four RAM buffer locations are &((datalog).datalogBuff)[0], &((datalog).datalogBuff)[1], &((datalog).datalogBuff)[2] and &((datalog).datalogBuff)[3]. These Datalog buffers are large arrays that contain value-triggered data that can then be displayed to a graph. The datalog prescalar is configurable, which allows the data log function to only log one out of every prescalar samples. The number of data log buffers, buffer size and data type can be selected in the datalog_input.h file.

GUID-20240320-SS0I-CXLC-FSX1-02H3RH95FDCP-low.svg Figure 4-29 DATALOG Module Block Diagram

To enable the datalog functionality, the predefine symbol DATALOG_EN must be added in the project properties as shown in Figure 4-2.

The following code shows the declaration of one DATALOG object and handle. This code is located in the datalog.c file.

__attribute__ ((section("datalog_data"))) DATALOG_Obj datalog;
DATALOG_Handle datalogHandle;       //!< the handle for the Datalog object

This puts data log object in the datalog_data section of memory. This section can be either TCM or OCRAM. Generally, we recommend to use OCRAM as TCM has limited size and needed by time critical part of software. Disable Data Cache to be able logging data in OCRAM in CCS12.6. To disable the data cache, Data Cache Enabled must be unchecked in the Tools > ARM Advanced Features as shown in Figure 4-30.

GUID-20240320-SS0I-WGWF-SDZD-5N02VQXVV4N0-low.svg Figure 4-30 Disable Data Cache for Real Time Debugging

The following code shows the initialization and setting up of the datalog object, handle and parameters. This code is located in the sys_main.c file.

// Initialize Datalog    
datalogHandle = DATALOG_init(&datalog, sizeof(datalog), manual, 0, 1);
DATALOG_Obj *datalogObj = (DATALOG_Obj *)datalogHandle;

The following code shows the configuration of the module inputs to point to the address of variables. The datalog module inputs point to different system variables depending on the build level. This code is located in the sys_main.c file:

datalogObj->iptr[0] = (float32_t*) &motorVars_M1.adcData.V_V.value[0];
datalogObj->iptr[1] = (float32_t*) &motorVars_M1.adcData.I_A.value[0];
datalogObj->iptr[2] = (float32_t*) &motorVars_M1.adcData.I_A.value[1];
datalogObj->iptr[3] = (float32_t*) &motorVars_M1.angleFOC_rad;

The following code shows the periodic updating of the datalog buffer with the new data during the execution of the motor1ctrlISR() interrupt. This code is located in the motor1_drive.c file.

#if defined(DATALOG_EN)
DATALOG_update(datalogHandle);
#endif  // DATALOG_EN

The datalog module is used with the graph tool, which provides a means to visually inspect the variables and judge system performance. The graph tool is available in CCS, which can display arrays of data in various graphical types. The arrays of data are stored in a device’s memory in various formats.

While the project is in debug mode, open and setup time graph windows to plot the data log buffers as shown in Figure 4-31. Alternatively, the user can import the graph configurations files that are located in the project folder. To import them, Click: Tools -> Graph -> Single Time… and select import and browse to the following location <workspace>\universal_motorcontrol_am263x_r5fss0-0_nortos_ti-arm-clang\src_control\debug\ and select datalog.graphProp file. Hit OK, this adds the Graphs to your debug perspective. Click on Continuous Refresh button on the top left corner of the graph tab.

GUID-20240320-SS0I-J5ZR-NHXB-GF0MJMJRM9K0-low.svg Figure 4-31 Graph Window Settings