am64x/am243x: pruicss_pwm: add documentation

-modify example to use macros
-add pruicss_pwm duty documentation

Fixes: PINDSW-7096

Signed-off-by: Manoj Koppolu <manoj_koppolu@ti.com>
This commit is contained in:
Manoj Koppolu 2023-12-12 11:32:56 +05:30
parent 3420efa0ae
commit 16e4af809f
15 changed files with 317 additions and 72 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 <a href="@VAR_MCU_SDK_DOCS_PATH/CCS_PROJECTS_PAGE.html" target="_blank"> Using SDK with CCS Projects </a>).
- **When using makefiles to build**, note the required combination and build using
make command (see <a href="@VAR_MCU_SDK_DOCS_PATH/MAKEFILE_BUILD_PAGE.html" target="_blank"> Using SDK with Makefiles </a>)
- Launch a CCS debug session and run the executable, see <a href="@VAR_MCU_SDK_DOCS_PATH/CCS_LAUNCH_PAGE.html" target="_blank"> CCS Launch, Load and Run </a>
- To probe the PRUICSS PWM output please refer setup details as mentioned above in Introduction section
# See Also
\ref PRUICSS_PWM_API

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -86,36 +86,36 @@ void pruicss_iep_init(void *args)
{
int32_t status;
/*Disable IEP0 counter*/
status= PRUICSS_controlIepCounter(gPruIcssHandle,0,0);
status= PRUICSS_controlIepCounter(gPruIcssHandle,PRUICSS_IEP_INST0,0);
DebugP_assert(SystemP_SUCCESS == status);
Pinmux_config(gPinMuxMainDomainCfg1, PINMUX_DOMAIN_ID_MAIN);
/*Intialize IEP0 count value*/
PRUICSS_PWM_setIepCounterLower_32bitValue(gPruIcssHandle,0,0xFFFFFFFF);
PRUICSS_PWM_setIepCounterUpper_32bitValue(gPruIcssHandle,0,0xFFFFFFFF);
PRUICSS_PWM_setIepCounterLower_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,0xFFFFFFFF);
PRUICSS_PWM_setIepCounterUpper_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,0xFFFFFFFF);
/*configure cmp 0 value with APP_PRUICSS_PWM_PRD_VAL*/
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,0,0,(APP_PRUICSS_PWM_PRD_VAL & 0xFFFFFFFF));
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,CMP_EVENT0,(APP_PRUICSS_PWM_PRD_VAL & 0xFFFFFFFF));
DebugP_assert(SystemP_SUCCESS == status);
/*configure cmp 6 value with APP_PRUICSS_IEP0_COMP6_VAL*/
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,0,6,(APP_PRUICSS_IEP0_COMP6_VAL & 0xFFFFFFFF));
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,CMP_EVENT6,(APP_PRUICSS_IEP0_COMP6_VAL & 0xFFFFFFFF));
DebugP_assert(SystemP_SUCCESS == status);
/*Enable cmp 0 and cmp 6*/
status=PRUICSS_PWM_configureIepCompareEnable(gPruIcssHandle,0,0x41);
status=PRUICSS_PWM_configureIepCompareEnable(gPruIcssHandle,PRUICSS_IEP_INST0,0x41);
DebugP_assert(SystemP_SUCCESS == status);
/*Set IEP0 counter Increment value*/
status=PRUICSS_setIepCounterIncrementValue(gPruIcssHandle,0,PRUICSS_IEP_COUNT_INCREMENT_VALUE);
status=PRUICSS_setIepCounterIncrementValue(gPruIcssHandle,PRUICSS_IEP_INST0,PRUICSS_IEP_COUNT_INCREMENT_VALUE);
DebugP_assert(SystemP_SUCCESS == status);
/*Enable cmp 0 reset of counter*/
PRUICSS_PWM_configureIepCmp0ResetEnable(gPruIcssHandle,0,0x1);
PRUICSS_PWM_configureIepCmp0ResetEnable(gPruIcssHandle,PRUICSS_IEP_INST0,0x1);
/*Enable IEP0 counter*/
status=PRUICSS_controlIepCounter(gPruIcssHandle,0,1);
status=PRUICSS_controlIepCounter(gPruIcssHandle,PRUICSS_IEP_INST0,1);
DebugP_assert(SystemP_SUCCESS == status);
}
@ -127,12 +127,12 @@ void pruicss_pwm_init(void *args)
status=PRUICSS_PWM_configurePwmEfficiencyModeEnable(gPruIcssHandle, 1);
DebugP_assert(SystemP_SUCCESS == status);
/*Enable compare0 trip reset */
PRUICSS_PWM_configurePwmCmp0TripResetEnable(gPruIcssHandle,0,1);
PRUICSS_PWM_configurePwmCmp0TripResetEnable(gPruIcssHandle,PRUICSS_PWM_SET0,1);
/*configure PWM B2 signal of set 0, intial state to low*/
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,0,0,1);
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,PRUICSS_PWM_SET0,PRUICSS_PWM_INTIAL_STATE,PRUICSS_PWM_OUTPUT_LOW);
DebugP_assert(SystemP_SUCCESS == status);
/*configure PWM B2 signal of set 0, active state to high*/
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,0,1,2);
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,PRUICSS_PWM_SET0,PRUICSS_PWM_ACTIVE_STATE,PRUICSS_PWM_OUTPUT_HIGH);
DebugP_assert(SystemP_SUCCESS == status);
}

View File

@ -104,7 +104,7 @@ void pruicss_iep_init(void *args)
int status;
/*Disable IEP0 counter*/
status= PRUICSS_controlIepCounter(gPruIcssHandle,0,0);
status= PRUICSS_controlIepCounter(gPruIcssHandle,PRUICSS_IEP_INST0,0);
DebugP_assert(SystemP_SUCCESS == status);
/*Enable IEP1 slave mode*/
@ -112,39 +112,39 @@ void pruicss_iep_init(void *args)
DebugP_assert(SystemP_SUCCESS == status);
/*Intialize IEP0 count value*/
PRUICSS_PWM_setIepCounterLower_32bitValue(gPruIcssHandle,0,0xFFFFFFFF);
PRUICSS_PWM_setIepCounterUpper_32bitValue(gPruIcssHandle,0,0xFFFFFFFF);
PRUICSS_PWM_setIepCounterLower_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,0xFFFFFFFF);
PRUICSS_PWM_setIepCounterUpper_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,0xFFFFFFFF);
/*configure cmp 0 value of IEP0 with APP_PRUICSS_PWM_PRD_VAL*/
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,0,0,(APP_PRUICSS_PWM_PRD_VAL & 0xFFFFFFFF));
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,CMP_EVENT0,(APP_PRUICSS_PWM_PRD_VAL & 0xFFFFFFFF));
DebugP_assert(SystemP_SUCCESS == status);
/*configure cmp 1 value with APP_PRUICSS_IEP0_COMP1_VAL*/
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,0,1,(APP_PRUICSS_IEP0_COMP1_VAL & 0xFFFFFFFF));
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,CMP_EVENT1,(APP_PRUICSS_IEP0_COMP1_VAL & 0xFFFFFFFF));
DebugP_assert(SystemP_SUCCESS == status);
/*configure cmp 11 value with APP_PRUICSS_IEP1_COMP11_VAL*/
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,1,12,(APP_PRUICSS_IEP1_COMP12_VAL & 0xFFFFFFFF));
/*configure cmp 12 value with APP_PRUICSS_IEP1_COMP12_VAL*/
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST1,CMP_EVENT12,(APP_PRUICSS_IEP1_COMP12_VAL & 0xFFFFFFFF));
DebugP_assert(SystemP_SUCCESS == status);
/*Enable cmp 0 and cmp 1 of IEP0*/
status=PRUICSS_PWM_configureIepCompareEnable(gPruIcssHandle,0,0x3);
status=PRUICSS_PWM_configureIepCompareEnable(gPruIcssHandle,PRUICSS_IEP_INST0,0x3);
DebugP_assert(SystemP_SUCCESS == status);
/*Enable cmp12 of IEP1*/
status=PRUICSS_PWM_configureIepCompareEnable(gPruIcssHandle,1,0x1000);
status=PRUICSS_PWM_configureIepCompareEnable(gPruIcssHandle,PRUICSS_IEP_INST1,0x1000);
DebugP_assert(SystemP_SUCCESS == status);
/*Set IEP0 counter Increment value*/
status=PRUICSS_setIepCounterIncrementValue(gPruIcssHandle,0,PRUICSS_IEP_COUNT_INCREMENT_VALUE);
status=PRUICSS_setIepCounterIncrementValue(gPruIcssHandle,PRUICSS_IEP_INST0,PRUICSS_IEP_COUNT_INCREMENT_VALUE);
DebugP_assert(SystemP_SUCCESS == status);
/*Enable cmp 0 reset of IEP0 counter*/
status=PRUICSS_PWM_configureIepCmp0ResetEnable(gPruIcssHandle,0,0x1);
status=PRUICSS_PWM_configureIepCmp0ResetEnable(gPruIcssHandle,PRUICSS_IEP_INST0,0x1);
DebugP_assert(SystemP_SUCCESS == status);
/*Enable IEP0 counter*/
status=PRUICSS_controlIepCounter(gPruIcssHandle,0,1);
status=PRUICSS_controlIepCounter(gPruIcssHandle,PRUICSS_IEP_INST0,1);
DebugP_assert(SystemP_SUCCESS == status);
}
@ -157,27 +157,27 @@ void pruicss_pwm_init(void *args){
DebugP_assert(SystemP_SUCCESS == status);
/*Enable compare0 trip reset of set 0*/
status=PRUICSS_PWM_configurePwmCmp0TripResetEnable(gPruIcssHandle,0,1);
status=PRUICSS_PWM_configurePwmCmp0TripResetEnable(gPruIcssHandle,PRUICSS_PWM_SET0,1);
DebugP_assert(SystemP_SUCCESS == status);
/*Enable compare0 trip reset of set 3 */
status=PRUICSS_PWM_configurePwmCmp0TripResetEnable(gPruIcssHandle,3,1);
status=PRUICSS_PWM_configurePwmCmp0TripResetEnable(gPruIcssHandle,PRUICSS_PWM_SET3,1);
DebugP_assert(SystemP_SUCCESS == status);
/*configure PWM B2 signal of set 0, intial state to low*/
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalA0(gPruIcssHandle,0,0,1);
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalA0(gPruIcssHandle,PRUICSS_PWM_SET0,PRUICSS_PWM_INTIAL_STATE,1);
DebugP_assert(SystemP_SUCCESS == status);
/*configure PWM B2 signal of set 0, active state to high*/
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalA0(gPruIcssHandle,0,1,2);
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalA0(gPruIcssHandle,PRUICSS_PWM_SET0,PRUICSS_PWM_ACTIVE_STATE,2);
DebugP_assert(SystemP_SUCCESS == status);
/*configure PWM B2 signal of set 0, intial state to low*/
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,3,0,1);
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,PRUICSS_PWM_SET3,PRUICSS_PWM_INTIAL_STATE,1);
DebugP_assert(SystemP_SUCCESS == status);
/*configure PWM B2 signal of set 0, active state to high*/
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,3,1,2);
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,PRUICSS_PWM_SET3,PRUICSS_PWM_ACTIVE_STATE,2);
DebugP_assert(SystemP_SUCCESS == status);
}

View File

@ -86,36 +86,36 @@ void pruicss_iep_init(void *args)
{
int32_t status;
/*Disable IEP0 counter*/
status= PRUICSS_controlIepCounter(gPruIcssHandle,0,0);
status= PRUICSS_controlIepCounter(gPruIcssHandle,PRUICSS_IEP_INST0,0);
DebugP_assert(SystemP_SUCCESS == status);
Pinmux_config(gPinMuxMainDomainCfg1, PINMUX_DOMAIN_ID_MAIN);
/*Intialize IEP0 count value*/
PRUICSS_PWM_setIepCounterLower_32bitValue(gPruIcssHandle,0,0xFFFFFFFF);
PRUICSS_PWM_setIepCounterUpper_32bitValue(gPruIcssHandle,0,0xFFFFFFFF);
PRUICSS_PWM_setIepCounterLower_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,0xFFFFFFFF);
PRUICSS_PWM_setIepCounterUpper_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,0xFFFFFFFF);
/*configure cmp 0 value with APP_PRUICSS_PWM_PRD_VAL*/
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,0,0,(APP_PRUICSS_PWM_PRD_VAL & 0xFFFFFFFF));
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,CMP_EVENT0,(APP_PRUICSS_PWM_PRD_VAL & 0xFFFFFFFF));
DebugP_assert(SystemP_SUCCESS == status);
/*configure cmp 6 value with APP_PRUICSS_IEP0_COMP6_VAL*/
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,0,6,(APP_PRUICSS_IEP0_COMP6_VAL & 0xFFFFFFFF));
status=PRUICSS_PWM_setIepCompareEventLower_32bitValue(gPruIcssHandle,PRUICSS_IEP_INST0,CMP_EVENT6,(APP_PRUICSS_IEP0_COMP6_VAL & 0xFFFFFFFF));
DebugP_assert(SystemP_SUCCESS == status);
/*Enable cmp 0 and cmp 6*/
status=PRUICSS_PWM_configureIepCompareEnable(gPruIcssHandle,0,0x41);
status=PRUICSS_PWM_configureIepCompareEnable(gPruIcssHandle,PRUICSS_IEP_INST0,0x41);
DebugP_assert(SystemP_SUCCESS == status);
/*Set IEP0 counter Increment value*/
status=PRUICSS_setIepCounterIncrementValue(gPruIcssHandle,0,PRUICSS_IEP_COUNT_INCREMENT_VALUE);
status=PRUICSS_setIepCounterIncrementValue(gPruIcssHandle,PRUICSS_IEP_INST0,PRUICSS_IEP_COUNT_INCREMENT_VALUE);
DebugP_assert(SystemP_SUCCESS == status);
/*Enable cmp 0 reset of counter*/
PRUICSS_PWM_configureIepCmp0ResetEnable(gPruIcssHandle,0,0x1);
PRUICSS_PWM_configureIepCmp0ResetEnable(gPruIcssHandle,PRUICSS_IEP_INST0,0x1);
/*Enable IEP0 counter*/
status=PRUICSS_controlIepCounter(gPruIcssHandle,0,1);
status=PRUICSS_controlIepCounter(gPruIcssHandle,PRUICSS_IEP_INST0,1);
DebugP_assert(SystemP_SUCCESS == status);
}
@ -127,12 +127,12 @@ void pruicss_pwm_init(void *args)
status=PRUICSS_PWM_configurePwmEfficiencyModeEnable(gPruIcssHandle, 1);
DebugP_assert(SystemP_SUCCESS == status);
/*Enable compare0 trip reset */
PRUICSS_PWM_configurePwmCmp0TripResetEnable(gPruIcssHandle,0,1);
PRUICSS_PWM_configurePwmCmp0TripResetEnable(gPruIcssHandle,PRUICSS_PWM_SET0,1);
/*configure PWM B2 signal of set 0, intial state to low*/
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,0,0,1);
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,PRUICSS_PWM_SET0,PRUICSS_PWM_INTIAL_STATE,PRUICSS_PWM_OUTPUT_LOW);
DebugP_assert(SystemP_SUCCESS == status);
/*configure PWM B2 signal of set 0, active state to high*/
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,0,1,2);
status=PRUICSS_PWM_actionOnOutputCfgPwmSignalB2(gPruIcssHandle,PRUICSS_PWM_SET0,PRUICSS_PWM_ACTIVE_STATE,PRUICSS_PWM_OUTPUT_HIGH);
DebugP_assert(SystemP_SUCCESS == status);
}

View File

@ -852,7 +852,7 @@ int32_t PRUICSS_PWM_actionOnOutputCfgPwmSignalA0(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;
@ -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;

View File

@ -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
*
*/
@ -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