1、State Machine
2、Mode切换寄存器 - M_S_CTRL
3、Normal User Mode与SBC Development Mode
Test Pin:
- 连接到GND或保持开路的normal user mode操作;
- 在设备开机时连接到VCC1以激活 SBC Development Mode见第5.1.7章)。SBC Development Mode是一组超级状态机,其中WD计时器被停止,CAN和VCC2的行为在SBC初始化模式下有所不同。否则,在行为上就没有差异了。
- 集成式下拉电阻器。
4、SBC Init Mode -> SBC Normal Mode
- Config. :设置可以在此SBC模式下进行更改;
- Fixed :设置保持在SBC正常模式中的定义。
- Bit Locking Mechanism(位锁定机制):某些控制位,例如电荷泵(CP)可以被锁定,并且在执行软重置命令(保持不变)后不会改变其配置
通过在寄存器M_S_CTRL中设置各自的SBC模式位,通过SPI选择不同的SBC操作模式。当通过SBC重新启动模式时,SBC模式位将被清除,因此总是显示当前的SBC模式。
任何SPI命令都会将SBC设置为SBC正常模式,即使它是一个非法的SPI命令.为了安全启动,建议使用第一个SPI命令来触发和配置看门狗
5、代码实现
uint8 Tlf9471ModeSwitch(SBCModeControlBit mode)
{
if(mode > SBCReset)
{
return 0xFF;
}
else
{
TLE9471ES.M_S_CTRL.U = Tlf9471DataTransfer(ReadCmd, M_S_CTRL_Add, 0);
if((TLE9471ES.M_S_CTRL.B.MODE == mode) && (TLE9471ES.M_S_CTRL.U != 0))
{
return mode;
}
else
{
TLE9471ES.M_S_CTRL.B.MODE = mode;
Tlf9471DataTransfer(WriteCmd, M_S_CTRL_Add, TLE9471ES.M_S_CTRL.U);
TLE9471ES.M_S_CTRL.U = Tlf9471DataTransfer(ReadCmd, M_S_CTRL_Add, 0);
if(TLE9471ES.M_S_CTRL.B.MODE == mode)
{
return mode;
}
else
{
return 0xFE;
}
}
}
}
boolean TLF9471VCC2Switch(VCC2ModeControlBit status)
{
if(status > VCC2On)
{
return 0xFF;
}
else
{
TLE9471ES.M_S_CTRL.U = Tlf9471DataTransfer(ReadCmd, M_S_CTRL_Add, 0);
if(TLE9471ES.M_S_CTRL.B.MODE != SBCNormalMode)
{
return 0xFE;
}
else
{
if(TLE9471ES.M_S_CTRL.B.VCC2_ON == status)
{
return status;
}
else
{
TLE9471ES.M_S_CTRL.B.VCC2_ON = status;
Tlf9471DataTransfer(WriteCmd, M_S_CTRL_Add, TLE9471ES.M_S_CTRL.U);
TLE9471ES.M_S_CTRL.U = Tlf9471DataTransfer(ReadCmd, M_S_CTRL_Add, 0);
if(TLE9471ES.M_S_CTRL.B.VCC2_ON == status)
{
return status;
}
else
{
return 0xFD;
}
}
}
}
}