![Logo](ti_logo.svg) |
AM263x Motor Control SDK
09.02.00
|
|
Go to the documentation of this file.
58 #include <drivers/eqep.h>
59 #include <drivers/gpio.h>
61 #include "math_types.h"
80 typedef struct _ENC_Obj_
101 #if defined(ENC_CALIB)
103 uint32_t hallPosData[12];
104 uint16_t hallStateIndex[12];
106 uint16_t hallStatePrev;
131 extern ENC_Handle
ENC_init(
void *pMemory,
const size_t numBytes);
157 const uint32_t gpioHallV,
const uint32_t gpioHallW,
158 const uint32_t gpioHallUBase,
const uint32_t gpioHallVBase,
159 const uint32_t gpioHallWBase)
264 static inline void ENC_setGPIOHallU(ENC_Handle handle,
const uint32_t gpioHallU,
const uint32_t gpioHallUBase)
283 static inline void ENC_setGPIOHallV(ENC_Handle handle,
const uint32_t gpioHallV,
const uint32_t gpioHallVBase)
302 static inline void ENC_setGPIOHallW(ENC_Handle handle,
const uint32_t gpioHallW,
const uint32_t gpioHallWBase)
340 uint32_t hallState = 0;
346 return(hallState & 0x00000007);
349 #define ENC_inline_run ENC_run // Backwards compatible
358 static __attribute__((always_inline))
372 obj->
thetaElec_rad = (thetaElec_pu - ((int32_t)thetaElec_pu)) * MATH_TWO_PI;
385 if(EQEP_getInterruptStatus(obj->
qepHandle) & EQEP_INT_INDEX_EVNT_LATCH)
389 EQEP_setPositionInitMode(obj->
qepHandle, EQEP_INIT_RISING_INDEX);
398 #if defined(ENC_CALIB)
407 EQEP_clearInterruptStatus(obj->
qepHandle, EQEP_INT_INDEX_EVNT_LATCH);
410 EQEP_setPositionInitMode(obj->
qepHandle, EQEP_INIT_DO_NOTHING);
413 #if defined(ENC_CALIB)
419 obj->hallPosData[obj->hallIndex] = EQEP_getPositionLatch(obj->
qepHandle);
420 obj->hallStateIndex[obj->hallIndex] = obj->
hallState;
424 if(obj->hallIndex >= 12)
437 #define ENC_full_run ENC_runHall
447 static __attribute__((always_inline))
461 obj->
thetaElec_rad = (thetaElec_pu - ((int32_t)thetaElec_pu)) * MATH_TWO_PI;
474 if(EQEP_getInterruptStatus(obj->
qepHandle) & EQEP_INT_INDEX_EVNT_LATCH)
478 EQEP_setPositionInitMode(obj->
qepHandle, EQEP_INIT_RISING_INDEX);
489 EQEP_clearInterruptStatus(obj->
qepHandle, EQEP_INT_INDEX_EVNT_LATCH);
492 EQEP_setPositionInitMode(obj->
qepHandle, EQEP_INIT_DO_NOTHING);
float32_t thetaHall_rad
Definition: encoder.h:91
float32_t encLines
Definition: encoder.h:84
uint16_t hallStateZero
Definition: encoder.h:116
static void ENC_setGPIOHallV(ENC_Handle handle, const uint32_t gpioHallV, const uint32_t gpioHallVBase)
Set the ENC controller parameter Hall V (only needed for calibration mode)
Definition: encoder.h:283
static float32_t ENC_getState(ENC_Handle handle)
Gets the state of the ENC controller.
Definition: encoder.h:214
static void ENC_runHall(ENC_Handle handle)
Runs the hall of ENC controller.
Definition: encoder.h:448
static uint16_t ENC_getHallState(ENC_Handle handle)
Get the hall state.
Definition: encoder.h:336
@ ENC_WAIT_FOR_INDEX
Definition: encoder.h:73
static float32_t ENC_getSpeedElec_Hz(ENC_Handle handle)
Runs the ENC controller.
Definition: encoder.h:182
ENC_Status_e encState
Definition: encoder.h:118
Defines a structure for the user parameters.
Definition: userParams.h:75
uint32_t * ptrHallPos
Definition: encoder.h:93
static void ENC_setHallGPIO(ENC_Handle handle, const uint32_t gpioHallU, const uint32_t gpioHallV, const uint32_t gpioHallW, const uint32_t gpioHallUBase, const uint32_t gpioHallVBase, const uint32_t gpioHallWBase)
Set the hall pins and address (only needed for calibration mode)
Definition: encoder.h:156
void ENC_setParams(ENC_Handle handle, const USER_Params *pUserParams)
Set the controller parameters.
uint32_t gpioHallVBase
Definition: encoder.h:113
Defines the ENC controller object.
Definition: encoder.h:81
static void ENC_setQEPHandle(ENC_Handle handle, const uint32_t qepBase)
Set the ENC controller eqep handle.
Definition: encoder.h:320
static void ENC_run(ENC_Handle handle)
Runs the ENC controller.
Definition: encoder.h:359
ENC_Status_e
Definition: encoder.h:70
uint16_t hallState
Definition: encoder.h:115
float32_t thetaMech_pu
Definition: encoder.h:88
float32_t polePairs
Definition: encoder.h:83
float32_t thetaMech_rad
Definition: encoder.h:89
float32_t Ts_sec
Definition: encoder.h:82
static void ENC_resetState(ENC_Handle handle)
Reset the ENC controller state.
Definition: encoder.h:228
uint32_t qepHandle
Definition: encoder.h:98
uint32_t gpioHallU
Definition: encoder.h:109
float32_t thetaElec_rad
Definition: encoder.h:90
@ ENC_CALIBRATION_DONE
Definition: encoder.h:74
uint32_t gpioHallWBase
Definition: encoder.h:114
uint32_t gpioHallV
Definition: encoder.h:110
uint32_t gpioHallUBase
Definition: encoder.h:112
ENC_Handle ENC_init(void *pMemory, const size_t numBytes)
Initializes the ENC controller.
@ ENC_IDLE
Definition: encoder.h:71
uint32_t gpioHallW
Definition: encoder.h:111
static void ENC_setState(ENC_Handle handle, const ENC_Status_e encState)
Sets up the ENC controller state.
Definition: encoder.h:246
Contains the public interface for the HAL and EST modules.
static void ENC_setGPIOHallU(ENC_Handle handle, const uint32_t gpioHallU, const uint32_t gpioHallUBase)
Set the ENC controller parameter Hall U (only needed for calibration mode)
Definition: encoder.h:264
@ ENC_ALIGNMENT
Definition: encoder.h:72
static float32_t ENC_getElecAngle(ENC_Handle handle)
Gets the angle from encoder.
Definition: encoder.h:198
uint32_t indexOffset
Definition: encoder.h:99
float32_t * ptrHalltheta
Definition: encoder.h:92
float32_t speedMech_Hz
Definition: encoder.h:96
float float32_t
Definition: dcl_common.h:58
static void ENC_setGPIOHallW(ENC_Handle handle, const uint32_t gpioHallW, const uint32_t gpioHallWBase)
Set the ENC controller parameter Hall W (only needed for calibration mode)
Definition: encoder.h:302
float32_t speedElec_Hz
Definition: encoder.h:95
float32_t mechanicalScaler
Definition: encoder.h:86