NXP MCU 技术william hill官网
直播中

刘强

7年用户 1210经验值
私信 关注
[问答]

(FS26+S32K3-T-BOX) FS26无法进入普通模式怎么解决?

我尝试使用示例程序“Sbc_fs26_Example_DS”将 FS26 置于正常模式,但失败了。似乎初始化期间的第一个看门狗提要已经失败了。这是我的代码和 UART 打印输出。我注意到,每当它退出调试模式时,它都会导致整个 FS26 重置,反复循环执行此代码。

eReturnValue = Sbc_fs26_Init(&sbcConfig_BOARD_InitPeripherals);

    Sbc_fs26_ReadRegister(TRUE, SBC_FS26_FS_STATES_ADDR, &rxData);
    printf("SBC_FS26_FS_STATES_ADDR: DevStatus:%x, FS_status:%xrn",rxData.u8DeviceStatus,rxData.u16ReadData);

    Sbc_fs26_ReadRegister(TRUE, SBC_FS26_FS_WD_TOKEN_ADDR, &rxData);
    如果(eReturnValue != E_OK)
{
b通过=假;/* 初始化过程中发生错误。*/
}
    printf("开始标记:%xrn",rxData.u16ReadData);
    eReturnValue |= Sbc_fs26_InitDevice();
    如果(eReturnValue != E_OK)
    {
        b通过=假;/* 初始化过程中发生错误。*/
    }
    printf("Sbc_fs26_InitDevice:%srn",OKtoSTR(eReturnValue));

    eReturnValue = Sbc_fs26_WdChangeToken(new_token);
    如果(eReturnValue != E_OK)
    {
        b通过=假;/* 初始化过程中发生错误。*/
    }
    printf("Sbc_fs26_WdChangeToken:%srn",OKtoSTR(eReturnValue));

    T_sbc_fs26_timeDelay(500U);

    /* 检查函数 Sbc_fs26_ReadRegister() 读取寄存器 SBC_FS26_FS_WD_TOKEN_ADDR */
    eReturnValue = Sbc_fs26_ReadRegister(TRUE, SBC_FS26_FS_WD_TOKEN_ADDR, &rxData);
    if((eReturnValue != E_OK) || (rxData.u16ReadData != new_token))
    {
        b通过=假;/* 初始化过程中发生错误。*/
    }
    printf("new_token/real_token:%x/%xrn",new_token,rxData.u16ReadData);

     /* 调用函数 WDG 刷新 */
    eReturnValue = Sbc_fs26_WdRefresh();
    如果(eReturnValue != E_OK)
    {
        b通过=假;/* 初始化过程中发生错误。*/
    }
    printf("Sbc_fs26_WdRefresh:%srn",OKtoSTR(eReturnValue));

    /* 检查 SBC 错误计数器 */
    eReturnValue = Sbc_fs26_GetFaultErrorCounterValue(&errorCounter);
    if((eReturnValue != E_OK) || (errorCounter != 0U))
    {
        b通过=假;/* 初始化过程中发生错误。*/
    }
    printf("fs26_GetFaultErrorCounterValue:%xrn",errorCounter);

    /* 退出调试模式。*/
    eReturnValue = Sbc_fs26_WriteRegister(TRUE, SBC_FS26_FS_STATES_ADDR, 0X4000, NULL_PTR);
    如果(eReturnValue != E_OK)
    {
        b通过=假;/* 初始化过程中发生错误。*/
    }
    printf("退出调试模式:%srn",OKtoSTR(eReturnValue));

    /* 使用 SBC_FS26_FS_BOTH 调用函数 fs26_FsxbRelease() 来设置 FS0B 和 FS1B */
    eReturnValue = Sbc_fs26_FsxbRelease(SBC_FS26_FS_BOTH);
    如果(eReturnValue != E_OK)
    {
        b通过=假;/* 初始化过程中发生错误。*/
    }
    printf("fs26_FsxbRelease:%srn",OKtoSTR(eReturnValue));

/* 读取内存中SBC FS26中的数据 0XB = 正常模式 */
eReturnValue = Sbc_fs26_ReadRegister(TRUE, SBC_FS26_FS_STATES_ADDR, &rxData);
if((eReturnValue != E_OK) || ((rxData.u16ReadData & 0xFF) != SBC_FS26_NORMAL_MODE))
{
b通过=假;/* 初始化过程中发生错误。*/
}
printf("读取 SBC_FS26_FS_STATES_ADDR:%srn",OKtoSTR(eReturnValue));
    printf("SBC_FS26_FS_STATES_ADDR: DevStatus:%x, FS_status:%xrn",rxData.u8DeviceStatus,rxData.u16ReadData);
#S32K3-T-BOX #FS26



































回帖(1)

李娜

2024-6-4 16:53:04
根据您的描述,似乎您的 FS26 仅能在调试模式下工作,并且无法进入正常模式。可能的原因是您的设备已经遇到了某种故障或错误,导致它无法正常启动。

以下是一些建议,您可以尝试解决 FS26 无法进入普通模式的问题:

1. 确认硬件连接是否正确:检查 FS26 和其他外设是否正确连接,并确保所有电缆和接头已连接牢固。

2. 重置设备:尝试按下 FS26 上的复位按钮或控制器上的软件复位按钮。这有助于清除任何现有错误或状态,让设备正常启动。

3. 更改初始化设置:您可以尝试使用其他初始化参数或尝试更改某些设置。请确保您正在使用正确的驱动程序和库,并正确配置所有寄存器和设置。

4. 检查调试输出和错误日志:查看您的调试输出和设备错误日志,以查找任何现有故障或错误。您可以使用其他调试工具或设备日志分析软件来帮助解决问题。

总之,FS26 无法进入正常模式可能有多种原因。您需要进行详细的调查和测试,以确定具体问题所在,并尝试解决它。如果您不能解决问题,请联系相关技术支持团队寻求进一步帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分