SPRAD20 March   2022 AM2631 , AM2631-Q1 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1

 

  1.   Trademarks
  2. 1Introduction
  3. 2A Step-by-Step Guide to Running a Traction Inverter
    1. 2.1 Create Real Time Debug Interface
      1. 2.1.1 Confirm CCS Features
      2. 2.1.2 Create Target Configuration File
      3. 2.1.3 Add Serial Command Monitor Software
      4. 2.1.4 Launch Real Time Debug
    2. 2.2 Configure Control Peripheral and ADC Interrupt With Sysconfig
      1. 2.2.1 Generate PWM for Time Reference
      2. 2.2.2 Synchronize ADC Sampling and Interrupt Service Routine
      3. 2.2.3 Configure DMA for Resolver Excitation via DAC
    3. 2.3 Configure Gate Driver Interface With MSPI
      1. 2.3.1 Confirm Control Card Hardware Configuration for Gate Drivers
      2. 2.3.2 Configure MCSPI for UCC5870 Gate Drivers
      3. 2.3.3 Initialize UCC5870 Gate Drivers
    4. 2.4 Get Samples From ADC and Read Samples Via CCS
      1. 2.4.1 Register and Enable Interrupt
      2. 2.4.2 Add Log Code to Read Samples in Graph at Fixed Rate
      3. 2.4.3 Read ADC Samples in Expression and Graph Windows
    5. 2.5 Generate Space Vector PWM and Drive Motor in Open Loop
      1. 2.5.1 Setup SVPWM Generator Inputs
      2. 2.5.2 Read SVPWM Duty Cycles in Graph Window
      3. 2.5.3 Power Up Inverter and Spin Motor in Open Loop
    6. 2.6 Close Current Loop With Mock Speed
      1. 2.6.1 Add Transformations and Read Id-Iq in Open Loop
      2. 2.6.2 Add Controllers to Close Current Loop
      3. 2.6.3 Read Id-Iq to Close Current Loop
    7. 2.7 Add Software Resolver to Digital Converter
      1. 2.7.1 Generate Excitation for Resolver Hardware
      2. 2.7.2 Add Resolver Software
      3. 2.7.3 Read Resolver Software Outputs
    8. 2.8 Close Speed Loop With Rotor Speed
      1. 2.8.1 Add Speed Loop Controllers
      2. 2.8.2 Add Speed Loop Demo Program
      3. 2.8.3 Read Motor Speed from Graph Window
  4. 3A Brief Guide to Code Migration
    1. 3.1 SoC Architecture Overview
    2. 3.2 SDK Resources Overview
    3. 3.3 Code Migration From AM24
    4. 3.4 Code Migration From C28
  5. 4Summary
  6. 5References

Code Migration From C28

C28 shares similar control peripherals as AM263x. But, the architecture and connectivity peripherals are completely different. Generally, programs related to control peripherals can be migrated with little or none modification while those related to CPU, memory management, and connectivity peripherals must be updated for details in Technical Reference Manual of AM263x.

As well know, direct operation on registers has been widely used in C28 programs in the past. The movement from register operations to API calls happened in recent years. The change from register operation to API calls simplifies the adoption of more complex MCUs. But, it takes effort to migrate from register user to API user. The effort is inevitable for either C28 and AM263x. Once the effort is made, it is not difficult to work with AM263x control subsystem as the concept from modules, like ADC and PWM, are very similar. Some examples on the similarity of control APIs are given in Table 3-2. And also, the powerful Sysconfig is available in AM263x SDK. It offers intuitive user interface for system configuration. End users are enabled to directly apply their ideas on control peripheral into configuration without worrying about API details. The APIs widely used in control loop have been given as part of the framework and discussed in Section 2.

Table 3-2 Examples on Similarity of API Definitions
API Function AM263x Definition C28 Definition
Get ADC Result

static inline uint16_t ADC_readResult

(uint32_t resultBase, ADC_SOCNumber socNumber)

static inline uint16_t ADC_readResult

(uint32_t resultBase, ADC_SOCNumber socNumber)

Set PWM Duty Cycle

static inline void EPWM_setCounterCompareValue

(uint32_t base, EPWM_CounterCompareModule compModule, uint16_t compCount)

static inline void EPWM_setCounterCompareValue

(uint32_t base, EPWM_CounterCompareModule compModule, uint16_t compCount)

On the other hand, despite the similarities, there are some difference in SDK and some implementations with similar names. As shown in Section 3.2, the SDK structure of AM263x is very different from the SDK of C28. Although they share similar control peripherals and APIs are similar, it is still necessary to understand the different in SDK structure so that detail can be easily found during development. And, for some features like XBAR, both C28 and AM263x have XBAR synchronizing operation between modules but XBAR in AM263x is much more powerful than XBAR in C28. It comes with a challenge that it must be sufficiently understood and properly configured. XBAR program from C28 cannot be directly applied into AM263x projects.