The example is provided by NXP. :fccu_fault_injection_mpc5744p
I have change the setting of the FCCU, to test the sequence of the EOUT[0] and EOUT[1].
When the fccu1_EoutConfig0.mode is set to FCCU_FO_BISTABLE. The output is not change when FCCU go to error state. The sequence of the EOUT[0] and EOUT[1] is not right. EOUT[0] is always high, and EOUT[1] is always low.
They do not change when the FCCU state changes.
But when fccu1_EoutConfig0.mode is set to FCCU_FO_DUAL_RAIL or FCCU_FO_TIME_SWITCHING. The output sequence of the EOUT[0] and EOUT[1] is right.
can you tell me the reason.
Below is my setting code .
Best regard.
/* ###################################################################
** This component module is generated by Processor Expert. Do not modify it.
** Filename : fccu1.c
** Project : fccu_fault_injection_mpc5744p
** Processor : MPC5744P_144
** Component : fccu
** Version : Component C55_Repository, Driver 01.00, CPU db: 3.00.000
** Repository : SDK_S32_PA_11
** Compiler : GNU C Compiler
** Date/Time : 2024-03-09, 10:48, # CodeGen: 0
**
** Copyright 1997 - 2015 Freescale Semiconductor, Inc.
** Copyright 2016-2017 NXP
** All Rights Reserved.
**
** THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
** INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
** STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
** IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
** THE POSSIBILITY OF SUCH DAMAGE.
** ###################################################################*/
/*!
** @file fccu1.c
** @version 01.00
*/
/*!
** @addtogroup fccu1_module fccu1 module documentation
** @{
*/
/*
* @page misra_violations MISRA-C:2012 violations
*
* @section [global]
* Violates MISRA 2012 Advisory Rule 8.7, External could be made static.
* The function is defined for use by application code.
*
* @section [global]
* Violates MISRA 2012 Required Rule 10.1, Unpermitted operand to operator '<<'
* The shifting operation don't exceed size of the variable, used to mark bit
* flags for different actions
*
* @section [global]
* Violates MISRA 2012 Required Rule 11.8, Attempt to cast away const/volatile from
* a pointer or reference
* The cast is required to initialize the pointer for EOUT configuration structure
*
*/
/* MODULE fccu1. */
#include "fccu1.h"
/*! fccu1 configuration structure */
/*! @brief Noncritical fault configuration 0 */
/*! @brief Number 0 */
const fccu_config_ncf_t fccu1_NcfConfig0_0 =
{
.functionID = 8U,
.hwSwRecovery = FCCU_NCF_SW_REC_FAULT,
.reset = FCCU_NCFS_SHORT_RESET,
.timeoutEnable = false,
.reactionType = 0U,
.callback = NULL,
.callbackParam = NULL
};
/*! @brief Number 1 */
const fccu_config_ncf_t fccu1_NcfConfig0_1 =
{
.functionID = 12U,
.hwSwRecovery = FCCU_NCF_HW_REC_FAULT,
.reset = FCCU_NCFS_NO_RESET,
.timeoutEnable = false,
.reactionType = (1<<FCCU_INT_NMI),
.callback = NULL,
.callbackParam = NULL
};
/*! @brief Number 2 */
const fccu_config_ncf_t fccu1_NcfConfig0_2 =
{
.functionID = 69U,
.hwSwRecovery = FCCU_NCF_SW_REC_FAULT,
.reset = FCCU_NCFS_NO_RESET,
.timeoutEnable = true,
.reactionType = (1<<FCCU_INT_ALARM),
.callback = TestAlarm,
.callbackParam = NULL
};
/*! @brief Configuration 0 */
const fccu_config_ncf_t * fccu1_NcfConfig0[] =
{
&fccu1_NcfConfig0_0,
&fccu1_NcfConfig0_1,
&fccu1_NcfConfig0_2
};
/*! @brief EOUT configuration */
/*! @brief Configuration 0 */
const fccu_eout_config_t fccu1_EoutConfig0 =
{
.activate = true,
.control = FCCU_FO_CONTROLLED_BY_FSM,//FCCU_FO_HIGH_UNTIL_FALUT_OCCUR,//FCCU_FO_CONTROLLED_BY_FSM,FCCU_FO_ALLWAY_LOW
.switchMode = false,
.mode = FCCU_FO_BISTABLE,// FCCU_FO_TIME_SWITCHING FCCU_FO_BISTABLE FCCU_FO_DUAL_RAIL
.prescaler = 10U,
.phase = FCCU_FO_OPPOSITE_PHASE_10,
.polarity = false,//false
.deltaFaultInterval = 0U
};
/*! @brief Control configuration */
/*! @brief Configuration 0 */
const fccu_control_t fccu1_Control0 =
{
.filterBypass = false,
.filterWidth = FCCU_FILTERWIDTH_UP_TO_50_US,
.debugEnable = false,
.irqEnableType = FCCU_IRQ_EN_NOIRQ,
.ncfTimeout = 2000U,
.configRun = (fccu_eout_config_t *)&fccu1_EoutConfig0,
.lockType = FCCU_LOCK_TYPE_NO_LOCK,
.ncfConfigNumber = 3U,
.callbackIsr = NULL,
.callbackIsrParam = NULL
};
/* END fccu1. */
/*!
** @}
*/
/*
** ###################################################################
**
** This file was created by Processor Expert 10.1 [05.21]
** for the NXP C55 series of microcontrollers.
**
** ###################################################################
*/
已解决! 转到解答。
Hello,
So you inject error before you change the protocol?
First change it and then inject error. Config mode is not accessible when you have fault active.
Also what about your FCCU CFG register?
And also, do you enable the fault for Bi-stable?
There is really no magic here, just set it correctly and it will output the signals.
Best regards,
Peter
Hello,
When the fccu1_EoutConfig0.mode is set to FCCU_FO_BISTABLE. The output is not change when FCCU go to error state. The sequence of the EOUT[0] and EOUT[1] is not right. EOUT[0] is always high, and EOUT[1] is always low.
Well, ok. So are you injecting the FCCU error in order to get the FCCU into error state?
Second, FCCU is state machine, so in case you configure it correctly it will represent the behavior of configuration.
Best regards,
Peter
yes .I did inject the FCCU error in order to get the FCCU into error state.
But when fccu1_EoutConfig0.mode is set to FCCU_FO_DUAL_RAIL or FCCU_FO_TIME_SWITCHING. The output sequence of the EOUT[0] and EOUT[1] is right.when I injected errors,the output changed like this
.
but when I set fccu1_EoutConfig0.mode to bitstable only,the output did not changed when I injected error.
I don't know where the settings are incorrect.
thanks very much
Hello,
So you inject error before you change the protocol?
First change it and then inject error. Config mode is not accessible when you have fault active.
Also what about your FCCU CFG register?
And also, do you enable the fault for Bi-stable?
There is really no magic here, just set it correctly and it will output the signals.
Best regards,
Peter