一、FS26 簡介
FS26 是 NXP 生產的系列汽車安全系統基礎晶片 (SBC),提供多種電源選擇,具有多個開關模式穩壓器和低壓差穩壓器 (LDO) 來支持微控制器,傳感器,外設 IC 和通信接口。它能為系統和跟蹤調節器提供高精度的參考電壓,還能提供多種系統控制和診斷功能,包括模擬多路復用器、通用 I/O 引腳。本文主要介紹 FS26 的 SPI 通信方式下的寄存器讀寫操作。FS26 內部框圖如下:

二、FS26軟體流程

本軟體流程是通過 Debug 模式進入正常模式的操作流程,推薦使用這個流程進入正常模式,便於調試和軟體下載更新。
三、步驟
① 通過硬體電路實現 DEBUG 管腳電平確定 Debug 模式。
上圖中,綠色虛線框部分電路適用於 FS85, FS26 B0 舊版本的 SBC 使用, 這種進入 debug 的硬體方法是進 debug 後 VDBG 要拉到 0V;紅色虛線框部分電路適用於新版 FS26 版本使用, 進debug 方式是一上電就保持讓 2.6V < VDBG < 6V, VDBG 不需再拉到 0V。
② VSUP_UVH < VSUP < 36V 滿足,調整器開始上電且復位輸出釋放。
③ 完成 ABIST 和 LBIST 自檢進入下一步,若自檢失敗將阻止安全輸出釋放可進入低功耗模式或晶片重啟。
④初始化配置寫入相關功能安全寄存器和安全輸出反應配置,配置看門狗,故障輸入監測,電壓監測。
⑤檢測並等待初始化完成後進行第一次看門狗更新並開始定時餵狗。
⑥通過良好的看門狗更新清除故障計數器。
⑦將 FS_STATES 寄存器 EXIT_DBG_MODE 位寫 1 退出 Debug 模式,在退出 Debug 前可設置按鍵檢測,當按鍵按下則不退出 Debug 且不進入正常模式,當按鍵沒有按下則直接退出 Debug 並進入正常模式程序後進入正常模式。

⑧寫命令到 FS_RELEASE_FS0B_FS1B 寄存器後讀取 FS26 FS_SAFE_IOS_1 寄存器直到檢測到 FS0B_SNS和FS0B_SNS 置 1 後達到釋放安全輸出並進入正常模式。
四、部分代碼介紹
1. 獲取初始化配置參數且將狀態設置為初始狀態
eReturnValue = Sbc_fs26_Init(&Sbc_fs26_xConfig_VS_0);
2. 讀取失效安全狀態,確保狀態處於初始化狀態,處於初始化狀態後進行相關寄存器初始化操作後進行第一次看門狗更新並啟動餵狗進程,等待進入失效安全 FS0B/FS1B 未釋放狀態,通過看門狗更新清除故障計數器後通過按鍵判斷是否退出 Debug 模式後進入正常模式。
Std_ReturnType Sbc_fs26_InitDevice(void)
{
Std_ReturnType eReturnValue = (Std_ReturnType)E_NOT_OK; /* Status. */
Sbc_fs26_RxFrameType xRxData = {0};
/* Check if initialized. */
if (TRUE == bIsInitialized){
eReturnValue = Sbc_fs26_ReadRegister(TRUE, SBC_FS26_FS_STATES_ADDR, &xRxData);
/* Return success immediately if the device is already in Normal FS state. Otherwise, go to failsafe configurations */
if (((Std_ReturnType)E_OK == eReturnValue) && (SBC_FS26_FS_FS_STATES_NORMAL_FS != (xRxData.u16ReadData & SBC_FS26_FS_FS_STATES_MASK)))
{
eReturnValue = Sbc_fs26_CheckStateAndGotoInitFS(xRxData.u16ReadData & SBC_FS26_FS_FS_STATES_MASK);
if ((Std_ReturnType)E_OK == eReturnValue)
{
eReturnValue = Sbc_fs26_DoInitRegister();
if ((Std_ReturnType)E_OK == eReturnValue)
{
/* Go to Normal Fail-safe state */
eReturnValue = Sbc_fs26_NormalFSSequence();
}
}
}
}
else
{
/* Driver not initialized. */
#if (STD_ON == SBC_FS26_DEV_ERROR_DETECT)
(void)Det_ReportError((uint16)SBC_FS26_MODULE_ID, (uint8)0, (uint8)SBC_FS26_SID_INITDEVICE, (uint8)SBC_FS26_E_UNINIT);
#endif /* STD_ON == SBC_FS26_DEV_ERROR_DETECT */
}
return eReturnValue;
}
五、參考文獻
PB_FS26.pdf
S32K3XXRM.pdf
歡迎在博文下方留言評論,我們會及時回復您的問題。
如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com 作者:小編 z
更多資訊,請掃碼關注我們!
評論