From 16e4af809f8a0e6687df05304c473d96714abbbd Mon Sep 17 00:00:00 2001 From: Manoj Koppolu Date: Tue, 12 Dec 2023 11:32:56 +0530 Subject: [PATCH] am64x/am243x: pruicss_pwm: add documentation -modify example to use macros -add pruicss_pwm duty documentation Fixes: PINDSW-7096 Signed-off-by: Manoj Koppolu --- .../components/pruicss_pwm/pruicss_pwm.md | 42 ++++++ .../api_guide/device/am243x/components.cfg | 2 + .../docs/api_guide/device/am243x/examples.cfg | 1 + .../api_guide/device/am64x/components.cfg | 2 + .../docs/api_guide/device/am64x/examples.cfg | 1 + docs_src/docs/api_guide/doxygen.cfg | 1 + docs_src/docs/api_guide/examples/examples.md | 4 + .../docs/api_guide/examples/pruicss_pwm.md | 101 +++++++++++++ .../am243x_lp_duty_example_probe_output.png | Bin 0 -> 38002 bytes ...x_am243x_evm_duty_example_probe_output.png | Bin 0 -> 32904 bytes .../r5fss0-0_freertos/pruicss_pwm_dutycycle.c | 24 +-- .../r5fss0-0_freertos/pruicss_pwm_dutycycle.c | 36 ++--- .../r5fss0-0_freertos/pruicss_pwm_dutycycle.c | 24 +-- source/pruicss_pwm/driver/pruicss_pwm.c | 12 +- source/pruicss_pwm/include/pruicss_pwm.h | 139 +++++++++++++++--- 15 files changed, 317 insertions(+), 72 deletions(-) create mode 100644 docs_src/docs/api_guide/components/pruicss_pwm/pruicss_pwm.md create mode 100644 docs_src/docs/api_guide/examples/pruicss_pwm.md create mode 100644 docs_src/docs/api_guide/images/pruicss_pwm/am243x_lp_duty_example_probe_output.png create mode 100644 docs_src/docs/api_guide/images/pruicss_pwm/am64x_am243x_evm_duty_example_probe_output.png diff --git a/docs_src/docs/api_guide/components/pruicss_pwm/pruicss_pwm.md b/docs_src/docs/api_guide/components/pruicss_pwm/pruicss_pwm.md new file mode 100644 index 0000000..387df53 --- /dev/null +++ b/docs_src/docs/api_guide/components/pruicss_pwm/pruicss_pwm.md @@ -0,0 +1,42 @@ +# PRUICSS PWM {#PRUICSS_PWM} + +[TOC] + +The PRUICSS PWM driver provides API to program Intial, Trip, Active states of PWM outputs. +Below are the high level features supported by the driver. + +## Features Supported + +- Configuration of IEP compare events to produce the PWM outputs +- Enable Efficiency mode to auto clear compare status on state transition +- Configuration of duty cycle to each of the PWM outputs +- Configuration of PWM outputs behaviour in Intial state +- Configuration of PWM outputs behaviour in Active state +- Configuration of PWM outputs behaviour in Trip state +- Configuration of PWM Glitch Filter with Debounce Value +- Configuration of Tripzone output block to mask trip errors inputs + +## SysConfig Features + +@VAR_SYSCFG_USAGE_NOTE + +SysConfig can be used to configure things mentioned below: + +- Syscfg based customization will be supported in future releases. + +## Features NOT Supported + +Generate PWM outputs with distinct time period, which means all the PWM outputs will be in sync with respected to each other, without re-programming. + +## Important Note + +PRUICSS has one pwm module, which has four pwm sets (PWM0, PWM1, PWM2, PWM3) +Each Set has six signals (A0,A1,A2,B0,B1,B2) With Reference to Technical Reference Manual, Pwm six signals(A0,A1,A2,B0,B1,B2) Naming convention is is slightly different as mentioned in \ref PRUICSS_PWM_API + +## Example Usage + +\ref EXAMPLE_PRUICSS_PWM_DUTY_CYCLE + +## API + +\ref PRUICSS_PWM_API diff --git a/docs_src/docs/api_guide/device/am243x/components.cfg b/docs_src/docs/api_guide/device/am243x/components.cfg index 5d53f9a..ecd1dd0 100644 --- a/docs_src/docs/api_guide/device/am243x/components.cfg +++ b/docs_src/docs/api_guide/device/am243x/components.cfg @@ -13,6 +13,8 @@ INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/components/position_se INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/components/current_sense/current_sense.md INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/components/current_sense/sdfm_design.md +INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/components/pruicss_pwm/pruicss_pwm.md + INPUT+= $(MOTOR_CONTROL_SDK_PATH)/source/position_sense/endat/include/endat_api.h INPUT+= $(MOTOR_CONTROL_SDK_PATH)/source/position_sense/endat/include/endat_drv.h INPUT+= $(MOTOR_CONTROL_SDK_PATH)/source/position_sense/hdsl/include/hdsl_drv.h diff --git a/docs_src/docs/api_guide/device/am243x/examples.cfg b/docs_src/docs/api_guide/device/am243x/examples.cfg index a74a8b3..c394f81 100644 --- a/docs_src/docs/api_guide/device/am243x/examples.cfg +++ b/docs_src/docs/api_guide/device/am243x/examples.cfg @@ -6,3 +6,4 @@ INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/examples/sdfm_example. INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/examples/bissc_example.md INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/examples/dcl/dcl_pi/dcl_pi.md INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/examples/dcl/dcl_df22/dcl_df22.md +INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/examples/pruicss_pwm.md diff --git a/docs_src/docs/api_guide/device/am64x/components.cfg b/docs_src/docs/api_guide/device/am64x/components.cfg index 2b7e387..3dc552a 100644 --- a/docs_src/docs/api_guide/device/am64x/components.cfg +++ b/docs_src/docs/api_guide/device/am64x/components.cfg @@ -11,6 +11,8 @@ INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/components/position_se INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/components/current_sense/current_sense.md INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/components/current_sense/sdfm_design.md +INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/components/pruicss_pwm/pruicss_pwm.md + INPUT+= $(MOTOR_CONTROL_SDK_PATH)/source/position_sense/endat/include/endat_api.h INPUT+= $(MOTOR_CONTROL_SDK_PATH)/source/position_sense/endat/include/endat_drv.h INPUT+= $(MOTOR_CONTROL_SDK_PATH)/source/position_sense/hdsl/include/hdsl_drv.h diff --git a/docs_src/docs/api_guide/device/am64x/examples.cfg b/docs_src/docs/api_guide/device/am64x/examples.cfg index 532c41e..affa5bd 100644 --- a/docs_src/docs/api_guide/device/am64x/examples.cfg +++ b/docs_src/docs/api_guide/device/am64x/examples.cfg @@ -3,3 +3,4 @@ INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/examples/hdsl_example. INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/examples/endat_example.md INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/examples/tamagawa_example.md INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/examples/sdfm_example.md +INPUT+= $(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/examples/pruicss_pwm.md \ No newline at end of file diff --git a/docs_src/docs/api_guide/doxygen.cfg b/docs_src/docs/api_guide/doxygen.cfg index 344cff3..c75d24e 100644 --- a/docs_src/docs/api_guide/doxygen.cfg +++ b/docs_src/docs/api_guide/doxygen.cfg @@ -856,6 +856,7 @@ IMAGE_PATH+=$(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/images/ IMAGE_PATH+=$(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/images/$(DEVICE)/ IMAGE_PATH+=$(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/images/position_sense IMAGE_PATH+=$(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/images/current_sense +IMAGE_PATH+=$(MOTOR_CONTROL_SDK_PATH)/docs_src/docs/api_guide/images/pruicss_pwm # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program diff --git a/docs_src/docs/api_guide/examples/examples.md b/docs_src/docs/api_guide/examples/examples.md index b3d2a97..510befc 100644 --- a/docs_src/docs/api_guide/examples/examples.md +++ b/docs_src/docs/api_guide/examples/examples.md @@ -8,6 +8,8 @@ This page lists all the examples and demos supported in this SDK. -# \subpage EXAMPLE_MOTORCONTROL_TAMAGAWA - Current Sense -# \subpage EXAMPLE_MOTORCONTROL_SDFM +- PRUICSS PWM + -# \subpage EXAMPLE_PRUICSS_PWM_DUTY_CYCLE \endcond \cond SOC_AM243X @@ -21,6 +23,8 @@ This page lists all the examples and demos supported in this SDK. - RTLibs -# \subpage EXAMPLES_DCL_PI -# \subpage EXAMPLES_DCL_DF22 +- PRUICSS PWM + -# \subpage EXAMPLE_PRUICSS_PWM_DUTY_CYCLE \endcond \cond SOC_AM263X diff --git a/docs_src/docs/api_guide/examples/pruicss_pwm.md b/docs_src/docs/api_guide/examples/pruicss_pwm.md new file mode 100644 index 0000000..09b36b7 --- /dev/null +++ b/docs_src/docs/api_guide/examples/pruicss_pwm.md @@ -0,0 +1,101 @@ +# PRUICSS PWM Duty Cycle {#EXAMPLE_PRUICSS_PWM_DUTY_CYCLE} + +[TOC] + +# Introduction + +This example generates a signal for a specified time and duty cycle using +PRUICSS PWM. The time and duty cycle can be configured by the user. + +\cond SOC_AM243X + +## AM243X-EVM +The example Uses PRUICSSG1 PWM module and does below + +- This example uses PRUICSSG1 PWM module as probing PRUICSSG0 PWM signals requires IO breakout board +- Configures PWM0_2_NEG(alias signal PWM0_B2) to generate a 1KHz signal with 25% duty cycle +- PWM0_2_NEG(alias signal PWM0_B2) uses IEP0 CMP6 EVENT to control Duty cycle and IEP0 CMP0 to control output Frequency +- Configures IEP0 CMP0 value with PWM0_2_NEG(alias signal PWM0_B2) output period value +- Configures IEP0 CMP6 value with PWM0_2_NEG(alias signal PWM0_B2) output duty cycle value +- PRG1_PWM0_B2 can be probed on J16 PIN1 + +#### AM243X-EVM Probe Output +\imageStyle{am64x_am243x_evm_duty_example_probe_output.png,width:70%} +\image html am64x_am243x_evm_duty_example_probe_output.png "PRUICSS PWM DUTY CYCLE PROBE OUTPUT" + +## AM243X-LP +The example Uses PRUICSSG0 PWM module and does below + +- Configures PWM0_0_POS(alias signal PWM0_A0) to generate a 1KHz signal with 25% duty cycle +- Configures PWM3_2_NEG(alias signal PWM3_B2) to generate a 1KHz signal with 25% duty cycle +- PWM0_0_POS(alias signal PWM0_A0) uses IEP0 CMP1 EVENT to control Duty cycle and IEP0 CMP0 to control output Frequency +- PWM3_2_NEG(alias signal PWM3_B2) uses IEP1 CMP12 EVENT to control Duty cycle and IEP0 CMP0 to control output Frequency +- Configures IEP0 CMP0 value with PWM0_0_POS(alias signal PWM0_A0) and PWM3_2_NEG(alias signal PWM3_B2) output period value +- Configures IEP0 CMP6 value with PWM0_0_POS(alias signal PWM0_A0) output duty cycle value +- Configures IEP1 CMP12 value with PWM0_0_POS(alias signal PWM0_A0) output duty cycle value +- PWM0_0_POS(alias signal PWM0_A0) and PWM3_2_NEG(alias signal PWM3_B2) will be in sync with respect to each other as IEP0 CMP0 value is used to control output period of these signals +- PRG0_PWM0_A0 can be probed on J1.5 +- PRG0_PWM3_B2 can be probed on J2.8 + +#### AM243X-LP Probe Output +\image html am243x_lp_duty_example_probe_output.png "PRUICSS PWM DUTY CYCLE PROBE OUTPUT" + +\endcond + +\cond SOC_AM64X + +## AM64X-EVM +The example Uses PRUICSSG1 PWM module and does below + +- This example uses PRUICSSG1 PWM module as probing PRUICSSG0 PWM signals requires IO breakout board +- Configures PWM0_2_NEG(alias signal PWM0_B2) to generate a 1KHz signal with 25% duty cycle +- PWM0_2_NEG(alias signal PWM0_B2) uses IEP0 CMP6 EVENT to control Duty cycle and IEP0 CMP0 to control output Frequency +- Configures IEP0 CMP0 value with PWM0_2_NEG(alias signal PWM0_B2) output period value +- Configures IEP0 CMP6 value with PWM0_2_NEG(alias signal PWM0_B2) output duty cycle value +- PRG1_PWM0_B2 can be probed on J16 PIN1 + +#### AM64X-EVM Probe Output +\imageStyle{am64x_am243x_evm_duty_example_probe_output.png,width:70%} +\image html am64x_am243x_evm_duty_example_probe_output.png "PRUICSS PWM DUTY CYCLE PROBE OUTPUT" + +\endcond + + +# Supported Combinations {#EXAMPLES_DRIVERS_EPWM_DUTY_CYCLE_COMBOS} + +\cond SOC_AM64X + + Parameter | Value + ---------------|----------- + CPU + OS | r5fss0-0 freertos + Toolchain | ti-arm-clang + Board | @VAR_BOARD_NAME_LOWER + Example folder | examples/drivers/epwm/epwm_duty_cycle/ + +\endcond + +\cond SOC_AM243X + + Parameter | Value + ---------------|----------- + CPU + OS | r5fss0-0 freertos + Toolchain | ti-arm-clang + Boards | @VAR_BOARD_NAME_LOWER, @VAR_LP_BOARD_NAME_LOWER + Example folder | examples/drivers/epwm/epwm_duty_cycle/ + +\endcond + +# Steps to Run the Example + +- **When using CCS projects to build**, import the CCS project for the required combination + and build it using the CCS project menu (see Using SDK with CCS Projects ). +- **When using makefiles to build**, note the required combination and build using + make command (see Using SDK with Makefiles ) +- Launch a CCS debug session and run the executable, see CCS Launch, Load and Run +- To probe the PRUICSS PWM output please refer setup details as mentioned above in Introduction section + +# See Also + +\ref PRUICSS_PWM_API + + diff --git a/docs_src/docs/api_guide/images/pruicss_pwm/am243x_lp_duty_example_probe_output.png b/docs_src/docs/api_guide/images/pruicss_pwm/am243x_lp_duty_example_probe_output.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad3ac0ee7547e942f1e6a58d981e7146c2f600a GIT binary patch literal 38002 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

?alXA}?S1F1+HJDPQo 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 literal 0 HcmV?d00001 diff --git a/docs_src/docs/api_guide/images/pruicss_pwm/am64x_am243x_evm_duty_example_probe_output.png b/docs_src/docs/api_guide/images/pruicss_pwm/am64x_am243x_evm_duty_example_probe_output.png new file mode 100644 index 0000000000000000000000000000000000000000..e571ab6465e4677144cdf317c3dc49bb62c6fb1d GIT binary patch literal 32904 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 @@ -939,7 +939,7 @@ int32_t PRUICSS_PWM_actionOnOutputCfgPwmSignalA1(PRUICSS_Handle handle, uint8_t PRUICSS_HwAttrs const *hwAttrs; int32_t retVal = SystemP_FAILURE; - if ((handle != NULL) && (pwmSet < PRUICSS_NUM_PWM_SETS) && (state < PRUICSS_NUM_PWM_STATES)) + if ((handle != NULL) && (pwmSet < PRUICSS_NUM_PWM_SETS) && (state < PRUICSS_NUM_PWM_STATES) && (action < PRUICSS_NUM_PWM_OUTPUT_ACTIONS)) { retVal = SystemP_SUCCESS; hwAttrs = (PRUICSS_HwAttrs const *)handle->hwAttrs; @@ -1026,7 +1026,7 @@ int32_t PRUICSS_PWM_actionOnOutputCfgPwmSignalA2(PRUICSS_Handle handle, uint8_t PRUICSS_HwAttrs const *hwAttrs; int32_t retVal = SystemP_FAILURE; - if ((handle != NULL) && (pwmSet < PRUICSS_NUM_PWM_SETS) && (state < PRUICSS_NUM_PWM_STATES)) + if ((handle != NULL) && (pwmSet < PRUICSS_NUM_PWM_SETS) && (state < PRUICSS_NUM_PWM_STATES) && (action < PRUICSS_NUM_PWM_OUTPUT_ACTIONS)) { retVal = SystemP_SUCCESS; hwAttrs = (PRUICSS_HwAttrs const *)handle->hwAttrs; @@ -1111,7 +1111,7 @@ int32_t PRUICSS_PWM_actionOnOutputCfgPwmSignalB0(PRUICSS_Handle handle, uint8_t PRUICSS_HwAttrs const *hwAttrs; int32_t retVal = SystemP_FAILURE; - if ((handle != NULL) && (pwmSet < PRUICSS_NUM_PWM_SETS) && (state < PRUICSS_NUM_PWM_STATES)) + if ((handle != NULL) && (pwmSet < PRUICSS_NUM_PWM_SETS) && (state < PRUICSS_NUM_PWM_STATES) && (action < PRUICSS_NUM_PWM_OUTPUT_ACTIONS)) { retVal = SystemP_SUCCESS; hwAttrs = (PRUICSS_HwAttrs const *)handle->hwAttrs; @@ -1196,7 +1196,7 @@ int32_t PRUICSS_PWM_actionOnOutputCfgPwmSignalB1(PRUICSS_Handle handle, uint8_t PRUICSS_HwAttrs const *hwAttrs; int32_t retVal = SystemP_FAILURE; - if ((handle != NULL) && (pwmSet < PRUICSS_NUM_PWM_SETS) && (state < PRUICSS_NUM_PWM_STATES)) + if ((handle != NULL) && (pwmSet < PRUICSS_NUM_PWM_SETS) && (state < PRUICSS_NUM_PWM_STATES) && (action < PRUICSS_NUM_PWM_OUTPUT_ACTIONS)) { retVal = SystemP_SUCCESS; hwAttrs = (PRUICSS_HwAttrs const *)handle->hwAttrs; @@ -1282,7 +1282,7 @@ int32_t PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(PRUICSS_Handle handle, uint8_t PRUICSS_HwAttrs const *hwAttrs; int32_t retVal = SystemP_FAILURE; - if ((handle != NULL) && (pwmSet < PRUICSS_NUM_PWM_SETS) && (state < PRUICSS_NUM_PWM_STATES)) + if ((handle != NULL) && (pwmSet < PRUICSS_NUM_PWM_SETS) && (state < PRUICSS_NUM_PWM_STATES) && (action < PRUICSS_NUM_PWM_OUTPUT_ACTIONS)) { retVal = SystemP_SUCCESS; hwAttrs = (PRUICSS_HwAttrs const *)handle->hwAttrs; diff --git a/source/pruicss_pwm/include/pruicss_pwm.h b/source/pruicss_pwm/include/pruicss_pwm.h index 1d8cc47..be0cf61 100644 --- a/source/pruicss_pwm/include/pruicss_pwm.h +++ b/source/pruicss_pwm/include/pruicss_pwm.h @@ -31,7 +31,7 @@ */ /** - * \defgroup PRUICSS_PWM_API APIs for PruIcss_pwm + * \defgroup PRUICSS_PWM_API APIs for PRUICSS PWM * * This module contains APIs for device driver pruicss_pwm supported in this SDK. * @@ -96,43 +96,132 @@ extern "C" { /* Macros & Typedefs */ /* ========================================================================== */ + /** - * \brief Number of PRUICSS IEP Instances + * + * \anchor PRUICSS_PWM_SET + * \name PRUICSS PWM SET + * + * @{ + */ +#define PRUICSS_NUM_PWM_SETS (0x4U) + +#define PRUICSS_PWM_SET0 (0x0U) + +#define PRUICSS_PWM_SET1 (0x1U) + +#define PRUICSS_PWM_SET2 (0x2U) + +#define PRUICSS_PWM_SET3 (0x3U) +/** @} */ + + +/** + * + * \anchor PRUICSS_PWM_STATE + * \name PRUICSS PWM STATE + * + * @{ + */ +#define PRUICSS_NUM_PWM_STATES (0x3U) + +#define PRUICSS_PWM_INTIAL_STATE (0x0U) + +#define PRUICSS_PWM_ACTIVE_STATE (0x1U) + +#define PRUICSS_PWM_TRIP_STATE (0x2U) +/** @} */ + +/** + * + * \anchor PRUICSS_PWM_OUTPUT_ACTION + * \name PRUICSS PWM OUTPUT ACTION + * + * @{ + */ +#define PRUICSS_NUM_PWM_OUTPUT_ACTIONS (0x3U) + +#define PRUICSS_PWM_OUTPUT_TOGGLE (0x0U) + +#define PRUICSS_PWM_OUTPUT_LOW (0x1U) + +#define PRUICSS_PWM_OUTPUT_HIGH (0x2U) +/** @} */ + +/** + * + * \anchor PRUICSS_IEP_INSTANCE + * \name PRUICSS IEP INSTANCE + * + * @{ */ #define PRUICSS_NUM_IEP_INSTANCES (0x2U) +#define PRUICSS_IEP_INST0 (0x0U) + +#define PRUICSS_IEP_INST1 (0x1U) +/** @} */ + + /** * \brief PRUICSS IEP count register maximum value */ #define PRUICSS_IEP_COUNT_REG_MAX (0xFFFFFFFFU) /** - * \brief Number of PRUICSS IEP compare events + * + * \anchor PRUICSS_IEP_COMPARE_EVENT + * \name PRUICSS IEP COMPARE EVENT + * + * @{ */ #define PRUICSS_NUM_IEP_CMP_EVENTS (0x10U) +#define CMP_EVENT0 (0x0U) + +#define CMP_EVENT1 (0x1U) + +#define CMP_EVENT2 (0x2U) + +#define CMP_EVENT3 (0x3U) + +#define CMP_EVENT4 (0x4U) + +#define CMP_EVENT5 (0x5U) + +#define CMP_EVENT6 (0x6U) + +#define CMP_EVENT7 (0x7U) + +#define CMP_EVENT8 (0x8U) + +#define CMP_EVENT9 (0x9U) + +#define CMP_EVENT10 (0xAU) + +#define CMP_EVENT11 (0xBU) + +#define CMP_EVENT12 (0xCU) + +#define CMP_EVENT13 (0xDU) + +#define CMP_EVENT14 (0xEU) + +#define CMP_EVENT15 (0xFU) +/** @} */ + /** * \brief Number of PRUICSS IEP compare events enable field maximum value */ #define PRUICSS_IEP_CMP_EVENTS_ENABLE_MAX_VALUE (0x0000FFFFU) -/** - * \brief Number of PRUICSS PWM Sets - */ -#define PRUICSS_NUM_PWM_SETS (0x4U) - -/** - * \brief Number of PRUICSS PWM number of states - */ -#define PRUICSS_NUM_PWM_STATES (0x3U) - /** * \brief PRUICSS PWM Debounce maximum value */ #define PRUICSS_PWM_DEBOUNCE_MAX_VALUE (0xFFU) /** - * \brief Number of PRUICSS PWM Sets + * \brief PRUICSS PWM mask field maximum value */ #define PRUICSS_PWM_TRIP_MASK_MAX_VALUE (0x000001FFU) @@ -147,7 +236,7 @@ extern "C" { * * \param handle PRUICSS_Handle returned from PRUICSS_open() * \param iepInstance 0 for IEP0, 1 for IEP1 - * \param value iep count register Lower 32bit Value + * \param value Iep count register lower 32bit value * \return SystemP_SUCCESS on success, SystemP_FAILURE on error * */ @@ -158,7 +247,7 @@ int32_t PRUICSS_PWM_setIepCounterLower_32bitValue(PRUICSS_Handle handle, uint8_t * * \param handle PRUICSS_Handle returned from PRUICSS_open() * \param iepInstance 0 for IEP0, 1 for IEP1 - * \param value iep count register Upper 32bit Value + * \param value Iep count register upper 32bit value * \return SystemP_SUCCESS on success, SystemP_FAILURE on error * */ @@ -169,7 +258,7 @@ int32_t PRUICSS_PWM_setIepCounterUpper_32bitValue(PRUICSS_Handle handle, uint8_t * * \param handle PRUICSS_Handle returned from PRUICSS_open() * \param iepInstance 0 for IEP0, 1 for IEP1 - * \param enable enable 0 for disable, 1 for enable + * \param enable 0 for disable, 1 for enable * \return SystemP_SUCCESS on success, SystemP_FAILURE on error * */ @@ -191,8 +280,8 @@ int32_t PRUICSS_PWM_configureIepCompareEnable(PRUICSS_Handle handle, uint8_t iep * * \param handle PRUICSS_Handle returned from PRUICSS_open() * \param iepInstance 0 for IEP0, 1 for IEP1 - * \param value compare register Lower 32bit Value - * \param cmpEvent compare Event number. Maximum value allowed is 15 + * \param value Compare register lower 32bit value + * \param cmpEvent Compare event number. maximum value allowed is 15 * \return SystemP_SUCCESS on success, SystemP_FAILURE on error * */ @@ -203,8 +292,8 @@ int32_t PRUICSS_PWM_setIepCompareEventLower_32bitValue(PRUICSS_Handle handle, ui * * \param handle PRUICSS_Handle returned from PRUICSS_open() * \param iepInstance 0 for IEP0, 1 for IEP1 - * \param value compare register Upper 32bit Value - * \param cmpEvent compare Event number. Maximum value allowed is 15 + * \param value Compare register upper 32bit Value + * \param cmpEvent Compare event number. maximum value allowed is 15 * \return SystemP_SUCCESS on success, SystemP_FAILURE on error * */ @@ -215,7 +304,7 @@ int32_t PRUICSS_PWM_setIepCompareEventUpper_32bitValue(PRUICSS_Handle handle, ui * * \param handle PRUICSS_Handle returned from PRUICSS_open() * \param pwmSet 0 for PWM0, 1 for PWM1, 2 for PWM2, 3 for PWM3 - * \param value pwmSet Debounce Value + * \param value Pwmset debounce value * \return SystemP_SUCCESS on success, SystemP_FAILURE on error * */ @@ -237,7 +326,7 @@ int32_t PRUICSS_PWM_setPwmDebounceValue(PRUICSS_Handle handle, uint8_t pwmSet, u * * \param handle PRUICSS_Handle returned from PRUICSS_open() * \param pwmSet 0 for PWM0, 1 for PWM1, 2 for PWM2, 3 for PWM3 - * \param maskvalue pwmSet maskValue + * \param maskvalue Pwmset maskvalue * \return SystemP_SUCCESS on success, SystemP_FAILURE on error * */ @@ -248,7 +337,7 @@ int32_t PRUICSS_PWM_setPwmTripMask(PRUICSS_Handle handle, uint8_t pwmSet, uint16 * * \param handle PRUICSS_Handle returned from PRUICSS_open() * \param pwmSet 0 for PWM0, 1 for PWM1, 2 for PWM2, 3 for PWM3 - * \param enable 0 for disable, 1 for enable + * \param enable 0 for disable, 1 for enable * \return SystemP_SUCCESS on success, SystemP_FAILURE on error * */ @@ -442,6 +531,8 @@ int32_t PRUICSS_PWM_configurePwmEfficiencyModeEnable(PRUICSS_Handle handle, uint */ int32_t PRUICSS_PWM_enableIEP1Slave(PRUICSS_Handle handle, uint8_t enable); +/** @} */ + #ifdef __cplusplus } #endif