汽车的上电过程,简单科技分为以下几步
1. 挡我们把要是拧到ACC之后,或者一键启动按第一下的时候,低压部分电器上电 VCU引电模块上电。整车进入ACC状态。
2. 这时把钥匙拧到ON状态,或者一键启动第二次按下是,通过某个特定的DAC引脚,通知整个控制电源管理芯片,控制整车控制主芯片得电运行。整车控制器得电后随即控制继电器2闭合,将蓄电池12V电源引致电机控制器,发动机控制器灯。带所有子控制器得电并完成自检成功后,通过CAN总线向整车控制器反馈上电结果,经过整车控制器确认完毕后,点亮仪表盘对应的指示灯,并通过声音提示驾驶员上电完成。这时候进入ON状态。
3. 执行点火操作。钥匙拧到start或者踩住刹车第三次按下一键启动按钮就OK了。(一键启动的车好像可以直接踩刹车点火哈)
一下为我目前的上电逻辑设计
首先,我需要判断是不是刹车踩下(Ctrl按下),如果刹车踩下,就只有两种操纵,启动和关闭操作,这里面我需要判断当前的上电状态。如果硬完成了自检即上电状态变为第二中,也就是我理解的正常启动,上电->自检->启动->关闭。
如果测试的上电状态为3,表示表示当前车是启动状态,那么不管猜不猜刹车,都得灭车。剩下其余的状态,在刹车踩下的状态下,只能执行点火启动操作。好像没有说的咋明白呀。
看下代码吧(*^▽^*)
void ControlPanel::slot_powerUpControl() { if(controlIsPressed) { if(powerUpSteps == 2) { //正常点火操作 } else if(powerUpSteps == 3) { if(m_meterDisplay) { m_meterDisplay->powerOff(); } powerUpSteps = 0; m_maincontrol->setPowerControlState(powerUpSteps); } else { //执行快速点火点火 m_meterDisplay->fastStart(); powerUpSteps = 3; m_maincontrol->setPowerControlState(powerUpSteps); } } else { if(powerUpSteps == 0) { if(m_meterDisplay) { m_meterDisplay->powerUp(); } } else if(powerUpSteps == 1) { if(m_meterDisplay) { m_meterDisplay->selfInspection(); } } else if(powerUpSteps == 2) { if(m_meterDisplay) { m_meterDisplay->powerOff(); } powerUpSteps = 0; m_maincontrol->setPowerControlState(powerUpSteps); } else if(powerUpSteps == 3) { if(m_meterDisplay) { m_meterDisplay->powerOff(); } powerUpSteps = 0; m_maincontrol->setPowerControlState(powerUpSteps); } } }
有部分接口还没有写完,后续持续更新。
看下效果展示