mcu时序图
2025-09-04 15:15:24 0 举报
一种mcu交互时序图
作者其他创作
大纲/内容
发送 0x8A(S_TWO_WIRE_OPCODE_BOOT_FINISH,通知启动完成)
发送 0x10(S_TWO_WIRE_OPCODE_EX_POWER,获取外辅电源状态)
发送后直接释放资源(无等待)
调用g_touchKeyCallback处理按键
调用STwoWireSendMsg()- 封装消息(操作码+数据+回调)- 创建发送线程
MCU
主控
校验CRC → 调用回调(如TwoWireGetDndCallBack)- 置位标志位结束等待
发送 0x85(S_TWO_WIRE_OPCODE_ANSWER,应答)
[振铃态 → 通话态]
alt
T_Protocol_Init线程启动
初始化阶段(含明确延时)
返回外辅电源状态数据
[无响应指令(如挂断、扬声器控制)]
发送 0x11(S_TWO_WIRE_OPCODE_POWER_EXIT,退出SET状态,无响应)
状态变化触发GPIO下降沿中断(如按键、振铃)
发送 0x8F(S_TWO_WIRE_OPCODE_GET_INDOOR_TYPE,获取室内机类型)
MCU主动上报(无预设延时)
切换至通话态(S_TWO_WIRE_STATE_TALK)
发送 0x12(S_TWO_WIRE_OPCODE_IO,获取IO状态)
[带响应指令(如状态查询)]
常规指令交互(含超时机制)
发送I2C帧(格式:帧头+长度+命令字+地址+帧ID+操作码+数据+CRC)
发送 0x06(S_TWO_WIRE_OPCODE_FREE,空闲状态上报)
[振铃状态上报]
等待响应(默认超时2秒,循环检测标志位)
返回DND状态数据
[按键上报]
发送 0x03(S_TWO_WIRE_OPCODE_RING,振铃状态上报)
发送 0x04(S_TWO_WIRE_OPCODE_CALL,通话状态上报)
发送 0x82(S_TWO_WIRE_OPCODE_READ_EEPROM,读取EEPROM获取房号,带回调)
返回IO状态数据
调用STwoWireInit()- 初始化I2C锁、线程锁- 配置中断GPIO(下降沿触发)- 创建接收/协议线程
解析数据更新g_callInInfo → 切换至振铃态
发送 0x01(S_TWO_WIRE_OPCODE_KEY,按键上报)
延时1秒(等待MCU接收,sleep(1))
返回MCU版本数据(7字节格式)
返回房号数据(触发GPIO中断)
发送 0x8D(S_TWO_WIRE_OPCODE_CTRL_SPEAKER,使能扬声器,0=使能)
触发GPIO中断,返回响应数据(含操作码+结果)
返回室内机类型数据(主/子分机)
初始化完成(initFinish=1)
状态机转换(由指令触发)
延时3秒(等待信息同步,sleep(3))
发送 0x8E(S_TWO_WIRE_OPCODE_GET_LOCAL_MUTE,获取免打扰状态)
发送 0x87(S_TWO_WIRE_OPCODE_HANG_UP,主动挂断)
[任意态 → 空闲态]
延时10秒(等待MCU稳定,sleep(10))
发送 0x80(S_TWO_WIRE_OPCODE_GET_MCU_VERSION,获取MCU版本)
切换至空闲态(S_TWO_WIRE_STATE_FREE)
0 条评论
下一页