<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic ETPU SM in MPC5xxx</title>
    <link>https://community.nxp.com/t5/MPC5xxx/ETPU-SM/m-p/1974598#M26839</link>
    <description>&lt;P&gt;Greetings,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does anyone have a working &lt;LI-PRODUCT title="eTPU" id="eTPU"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&amp;nbsp; SM (Stepper Motor) example?&lt;/P&gt;&lt;P&gt;I trying to use the&amp;nbsp;MCU &lt;LI-PRODUCT title="MPC5777C" id="MPC5777C"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&amp;nbsp;.&amp;nbsp;My intention was to use ETPUB Channels 7 to 10.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to control a stepper based on AN2869. But I think I didn't understand something. The motor flags never return to zero. after calling&amp;nbsp;fs_etpu_sm_get_cp(...). Which&amp;nbsp;seems to be returning some random values.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Maybe the problem is the desired position, I trying to pass the possible values for HALF STEP config, or I think so {0x0E0E0E, 0x1C1C1C, 0x383838, 0x707070, 0xE0E0E0, 0x1C1C1C, 0x383838}.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Some external definitions&lt;/P&gt;&lt;P&gt;/*====== The FS_ETPU_SM_2PHASE_HALF_STEP configuration predefines: =====*/&lt;BR /&gt;#define FS_ETPU_SM_CFG_1_CHANNELS 4&lt;BR /&gt;#define FS_ETPU_SM_CFG_1_FM FS_ETPU_SM_HALF_STEP&lt;BR /&gt;#define FS_ETPU_SM_CFG_1_PIN_SEQUENCE 0x070707&lt;BR /&gt;/* can be replaced by rotated versions:&lt;BR /&gt;0x0E0E0E, 0x1C1C1C, 0x383838, 0x707070, 0xE0E0E0, 0x1C1C1C, 0x383838 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My code (I don't know how to paste code here, it messed up a bit):&lt;/P&gt;&lt;P&gt;void StepperDemo(int32_t steps) {&lt;BR /&gt;#define SM_ETPU_CHANNEL(x) (64 + (x))&lt;BR /&gt;#define SM_ACCEL_TABLE_SIZE 1&lt;/P&gt;&lt;P&gt;static const pin_settings_config_t etpuBPinMux[] = {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .base&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = SIU,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pinPortIdx&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 154u,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .mux&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MUX_PRIMARY,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .outputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_OUTPUT_BUFFER_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .slewRateCtrl&amp;nbsp; &amp;nbsp; &amp;nbsp; = HALF_STRENGTH_WITH_SLEWRATE_CONTROL,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .openDrain&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_OPEN_DRAIN_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .hysteresis&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_HYSTERESYS_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .driveSelect&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MINIMUM_DRIVE_STRENGTH,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .inputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_INPUT_BUFFER_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pullConfig&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_INTERNAL_PULL_UP_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; },&lt;BR /&gt;&amp;nbsp; &amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .base&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = SIU,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pinPortIdx&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 155u,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .mux&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MUX_PRIMARY,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .outputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_OUTPUT_BUFFER_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .slewRateCtrl&amp;nbsp; &amp;nbsp; &amp;nbsp; = HALF_STRENGTH_WITH_SLEWRATE_CONTROL,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .openDrain&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_OPEN_DRAIN_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .hysteresis&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_HYSTERESYS_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .driveSelect&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MINIMUM_DRIVE_STRENGTH,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .inputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_INPUT_BUFFER_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pullConfig&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_INTERNAL_PULL_UP_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; },&lt;BR /&gt;&amp;nbsp; &amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .base&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = SIU,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pinPortIdx&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 156u,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .mux&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MUX_PRIMARY,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .outputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_OUTPUT_BUFFER_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .slewRateCtrl&amp;nbsp; &amp;nbsp; &amp;nbsp; = HALF_STRENGTH_WITH_SLEWRATE_CONTROL,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .openDrain&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_OPEN_DRAIN_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .hysteresis&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_HYSTERESYS_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .driveSelect&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MINIMUM_DRIVE_STRENGTH,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .inputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_INPUT_BUFFER_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pullConfig&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_INTERNAL_PULL_UP_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; },&lt;BR /&gt;&amp;nbsp; &amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .base&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = SIU,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pinPortIdx&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 157u,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .mux&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MUX_PRIMARY,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .outputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_OUTPUT_BUFFER_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .slewRateCtrl&amp;nbsp; &amp;nbsp; &amp;nbsp; = HALF_STRENGTH_WITH_SLEWRATE_CONTROL,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .openDrain&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_OPEN_DRAIN_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .hysteresis&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_HYSTERESYS_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .driveSelect&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MINIMUM_DRIVE_STRENGTH,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .inputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_INPUT_BUFFER_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pullConfig&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_INTERNAL_PULL_UP_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; },&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static struct {&lt;BR /&gt;enum {&lt;BR /&gt;StepperState_Init,&lt;BR /&gt;StepperState_Idle,&lt;BR /&gt;StepperState_Moving,&lt;BR /&gt;} state;&lt;BR /&gt;} data;&lt;/P&gt;&lt;P&gt;static const uint16_t accel_tbl[SM_ACCEL_TABLE_SIZE] = {&lt;BR /&gt;1&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;switch (data.state) {&lt;BR /&gt;case StepperState_Init: {&lt;BR /&gt;uint32_t frequency;&lt;BR /&gt;Clocks_GetFreq(ETPU1_CLK, &amp;amp;frequency);&lt;/P&gt;&lt;P&gt;PINS_DRV_Init(ARRAYSIZE(etpuBPinMux), etpuBPinMux);&lt;/P&gt;&lt;P&gt;if (FS_ETPU_ERROR_NONE == fs_etpu_sm_init(SM_ETPU_CHANNEL(7), FS_ETPU_SM_2PHASE_HALF_STEP,&lt;BR /&gt;FS_ETPU_SM_CFG_1_PIN_SEQUENCE, (frequency / 1000), (frequency / 5500), accel_tbl,&lt;BR /&gt;ARRAYSIZE(accel_tbl)))&lt;BR /&gt;{&lt;BR /&gt;fs_etpu_sm_enable(SM_ETPU_CHANNEL(7), FS_ETPU_PRIORITY_LOW);&lt;BR /&gt;data.state = StepperState_Idle;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;case StepperState_Idle: {&lt;BR /&gt;uint24_t curPos = fs_etpu_sm_get_cp(SM_ETPU_CHANNEL(7));&lt;BR /&gt;uint24_t desPos = fs_etpu_sm_get_dp(SM_ETPU_CHANNEL(7));&lt;/P&gt;&lt;P&gt;if (steps) {&lt;BR /&gt;fs_etpu_sm_set_dp(SM_ETPU_CHANNEL(7), steps);&lt;BR /&gt;data.state = StepperState_Moving;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;case StepperState_Moving: {&lt;BR /&gt;uint8_t flags = fs_etpu_sm_get_flags(SM_ETPU_CHANNEL(7));&lt;/P&gt;&lt;P&gt;uint24_t curPos = fs_etpu_sm_get_cp(SM_ETPU_CHANNEL(7));&lt;BR /&gt;uint24_t desPos = fs_etpu_sm_get_dp(SM_ETPU_CHANNEL(7));&lt;/P&gt;&lt;P&gt;if ((flags &amp;amp; FS_ETPU_SM_STEPPING) == FS_ETPU_SM_STEPPING_OFF) {&lt;BR /&gt;data.state = StepperState_Idle;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;#undef SM_ACCEL_TABLE_SIZE&lt;BR /&gt;#undef SM_ETPU_CHANNEL(x)&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Christofer&lt;/P&gt;</description>
    <pubDate>Tue, 15 Oct 2024 20:40:21 GMT</pubDate>
    <dc:creator>christofer_ft</dc:creator>
    <dc:date>2024-10-15T20:40:21Z</dc:date>
    <item>
      <title>ETPU SM</title>
      <link>https://community.nxp.com/t5/MPC5xxx/ETPU-SM/m-p/1974598#M26839</link>
      <description>&lt;P&gt;Greetings,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Does anyone have a working &lt;LI-PRODUCT title="eTPU" id="eTPU"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&amp;nbsp; SM (Stepper Motor) example?&lt;/P&gt;&lt;P&gt;I trying to use the&amp;nbsp;MCU &lt;LI-PRODUCT title="MPC5777C" id="MPC5777C"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&amp;nbsp;.&amp;nbsp;My intention was to use ETPUB Channels 7 to 10.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to control a stepper based on AN2869. But I think I didn't understand something. The motor flags never return to zero. after calling&amp;nbsp;fs_etpu_sm_get_cp(...). Which&amp;nbsp;seems to be returning some random values.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Maybe the problem is the desired position, I trying to pass the possible values for HALF STEP config, or I think so {0x0E0E0E, 0x1C1C1C, 0x383838, 0x707070, 0xE0E0E0, 0x1C1C1C, 0x383838}.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Some external definitions&lt;/P&gt;&lt;P&gt;/*====== The FS_ETPU_SM_2PHASE_HALF_STEP configuration predefines: =====*/&lt;BR /&gt;#define FS_ETPU_SM_CFG_1_CHANNELS 4&lt;BR /&gt;#define FS_ETPU_SM_CFG_1_FM FS_ETPU_SM_HALF_STEP&lt;BR /&gt;#define FS_ETPU_SM_CFG_1_PIN_SEQUENCE 0x070707&lt;BR /&gt;/* can be replaced by rotated versions:&lt;BR /&gt;0x0E0E0E, 0x1C1C1C, 0x383838, 0x707070, 0xE0E0E0, 0x1C1C1C, 0x383838 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My code (I don't know how to paste code here, it messed up a bit):&lt;/P&gt;&lt;P&gt;void StepperDemo(int32_t steps) {&lt;BR /&gt;#define SM_ETPU_CHANNEL(x) (64 + (x))&lt;BR /&gt;#define SM_ACCEL_TABLE_SIZE 1&lt;/P&gt;&lt;P&gt;static const pin_settings_config_t etpuBPinMux[] = {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .base&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = SIU,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pinPortIdx&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 154u,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .mux&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MUX_PRIMARY,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .outputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_OUTPUT_BUFFER_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .slewRateCtrl&amp;nbsp; &amp;nbsp; &amp;nbsp; = HALF_STRENGTH_WITH_SLEWRATE_CONTROL,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .openDrain&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_OPEN_DRAIN_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .hysteresis&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_HYSTERESYS_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .driveSelect&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MINIMUM_DRIVE_STRENGTH,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .inputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_INPUT_BUFFER_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pullConfig&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_INTERNAL_PULL_UP_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; },&lt;BR /&gt;&amp;nbsp; &amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .base&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = SIU,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pinPortIdx&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 155u,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .mux&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MUX_PRIMARY,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .outputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_OUTPUT_BUFFER_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .slewRateCtrl&amp;nbsp; &amp;nbsp; &amp;nbsp; = HALF_STRENGTH_WITH_SLEWRATE_CONTROL,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .openDrain&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_OPEN_DRAIN_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .hysteresis&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_HYSTERESYS_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .driveSelect&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MINIMUM_DRIVE_STRENGTH,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .inputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_INPUT_BUFFER_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pullConfig&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_INTERNAL_PULL_UP_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; },&lt;BR /&gt;&amp;nbsp; &amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .base&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = SIU,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pinPortIdx&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 156u,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .mux&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MUX_PRIMARY,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .outputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_OUTPUT_BUFFER_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .slewRateCtrl&amp;nbsp; &amp;nbsp; &amp;nbsp; = HALF_STRENGTH_WITH_SLEWRATE_CONTROL,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .openDrain&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_OPEN_DRAIN_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .hysteresis&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_HYSTERESYS_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .driveSelect&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MINIMUM_DRIVE_STRENGTH,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .inputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_INPUT_BUFFER_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pullConfig&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_INTERNAL_PULL_UP_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; },&lt;BR /&gt;&amp;nbsp; &amp;nbsp; {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .base&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = SIU,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pinPortIdx&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 157u,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .mux&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MUX_PRIMARY,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .outputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_OUTPUT_BUFFER_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .slewRateCtrl&amp;nbsp; &amp;nbsp; &amp;nbsp; = HALF_STRENGTH_WITH_SLEWRATE_CONTROL,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .openDrain&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_OPEN_DRAIN_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .hysteresis&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_HYSTERESYS_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .driveSelect&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_MINIMUM_DRIVE_STRENGTH,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .inputBuffer&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= PORT_INPUT_BUFFER_DISABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .pullConfig&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = PORT_INTERNAL_PULL_UP_ENABLED,&lt;BR /&gt;&amp;nbsp; &amp;nbsp; },&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;static struct {&lt;BR /&gt;enum {&lt;BR /&gt;StepperState_Init,&lt;BR /&gt;StepperState_Idle,&lt;BR /&gt;StepperState_Moving,&lt;BR /&gt;} state;&lt;BR /&gt;} data;&lt;/P&gt;&lt;P&gt;static const uint16_t accel_tbl[SM_ACCEL_TABLE_SIZE] = {&lt;BR /&gt;1&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;switch (data.state) {&lt;BR /&gt;case StepperState_Init: {&lt;BR /&gt;uint32_t frequency;&lt;BR /&gt;Clocks_GetFreq(ETPU1_CLK, &amp;amp;frequency);&lt;/P&gt;&lt;P&gt;PINS_DRV_Init(ARRAYSIZE(etpuBPinMux), etpuBPinMux);&lt;/P&gt;&lt;P&gt;if (FS_ETPU_ERROR_NONE == fs_etpu_sm_init(SM_ETPU_CHANNEL(7), FS_ETPU_SM_2PHASE_HALF_STEP,&lt;BR /&gt;FS_ETPU_SM_CFG_1_PIN_SEQUENCE, (frequency / 1000), (frequency / 5500), accel_tbl,&lt;BR /&gt;ARRAYSIZE(accel_tbl)))&lt;BR /&gt;{&lt;BR /&gt;fs_etpu_sm_enable(SM_ETPU_CHANNEL(7), FS_ETPU_PRIORITY_LOW);&lt;BR /&gt;data.state = StepperState_Idle;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;case StepperState_Idle: {&lt;BR /&gt;uint24_t curPos = fs_etpu_sm_get_cp(SM_ETPU_CHANNEL(7));&lt;BR /&gt;uint24_t desPos = fs_etpu_sm_get_dp(SM_ETPU_CHANNEL(7));&lt;/P&gt;&lt;P&gt;if (steps) {&lt;BR /&gt;fs_etpu_sm_set_dp(SM_ETPU_CHANNEL(7), steps);&lt;BR /&gt;data.state = StepperState_Moving;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;case StepperState_Moving: {&lt;BR /&gt;uint8_t flags = fs_etpu_sm_get_flags(SM_ETPU_CHANNEL(7));&lt;/P&gt;&lt;P&gt;uint24_t curPos = fs_etpu_sm_get_cp(SM_ETPU_CHANNEL(7));&lt;BR /&gt;uint24_t desPos = fs_etpu_sm_get_dp(SM_ETPU_CHANNEL(7));&lt;/P&gt;&lt;P&gt;if ((flags &amp;amp; FS_ETPU_SM_STEPPING) == FS_ETPU_SM_STEPPING_OFF) {&lt;BR /&gt;data.state = StepperState_Idle;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;#undef SM_ACCEL_TABLE_SIZE&lt;BR /&gt;#undef SM_ETPU_CHANNEL(x)&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Christofer&lt;/P&gt;</description>
      <pubDate>Tue, 15 Oct 2024 20:40:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/ETPU-SM/m-p/1974598#M26839</guid>
      <dc:creator>christofer_ft</dc:creator>
      <dc:date>2024-10-15T20:40:21Z</dc:date>
    </item>
    <item>
      <title>Re: ETPU SM</title>
      <link>https://community.nxp.com/t5/MPC5xxx/ETPU-SM/m-p/1975752#M26846</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;I was talking to only person who was working on the drivers for eTPU and he is not able to help here.&lt;/P&gt;
&lt;P&gt;I can only offer you SW support via official NXP web:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.nxp.com/support/support/nxp-engineering-services:SW-SUPPORT" target="_blank"&gt;https://www.nxp.com/support/support/nxp-engineering-services:SW-SUPPORT&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;or you can try reaching out your NXP FAE/Sales if you have one for help.&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Peter&lt;/P&gt;</description>
      <pubDate>Thu, 17 Oct 2024 06:28:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/ETPU-SM/m-p/1975752#M26846</guid>
      <dc:creator>petervlna</dc:creator>
      <dc:date>2024-10-17T06:28:20Z</dc:date>
    </item>
    <item>
      <title>Re: ETPU SM</title>
      <link>https://community.nxp.com/t5/MPC5xxx/ETPU-SM/m-p/1976074#M26849</link>
      <description>Hello Peter,&lt;BR /&gt;&lt;BR /&gt;Thanks for your answer.&lt;BR /&gt;&lt;BR /&gt;I've managed of understand some of it. Just missing the acceleration table. And why it never stops for certain values of desired position.&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;&lt;BR /&gt;Christofer</description>
      <pubDate>Thu, 17 Oct 2024 12:25:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/ETPU-SM/m-p/1976074#M26849</guid>
      <dc:creator>christofer_ft</dc:creator>
      <dc:date>2024-10-17T12:25:14Z</dc:date>
    </item>
  </channel>
</rss>

