==AM3352、STM32通讯协议== *通讯数据简单说明:在开机后,AM3352在无动作操作情况时,每30秒发送心跳包到STM32,证明AM3352正常待机状态,STM32无需应答; *在工作状态下,每1秒STM32将采集到的AD数据等数据发送给AM3352,AM3352无需应答; *在工作状态下,AM3352发送控制命令数据到STM32,STM32需要有应答,未收到应答需要重新发送; ====物理层协议==== *通过串口通讯,9600波特率,校验位无,数据位8位,停止位1位 =====帧格式表===== {| class="wikitable sortable" |- ! 起始位 !! 数据位 !! 校验位置 !! 结束位置 |- |0xA5,一个字节长度||见数据位表,变长||数据位异或校验,一个字节长度||0x5A,一个字节长度 |} =====数据位表===== {| class="wikitable sortable" |- ! 数据来源地址 !! 目的地址 !! 数据长度 !! 数据命令以及数据内容 |- |0x01表示第一块CPU板,0x02表示第二块CPU板,0x03表示第三块CPU板;
0x81表示第一块STM32板,0x82表示第二块STM32电路板,0x83表示第二块STM32电路板,一个字节||0x01表示第一块CPU板,0x02表示第二块CPU板,0x03表示第三块CPU板;
0x81表示第一块STM32板,0x82表示第二块STM32电路板,0x83表示第二块STM32电路板;
0x80表示目的地址是广播给所有的CPU电路板,0xfe表示目的地址是所有的STM32电路板,0xff表示广播给系统中所有设备,其他地址备用,一个字节长度||数据命令以及数据内容部分数据长度,两个字节,高位在前||见数据命令以及数据内容表,'''是否需要回复'''是数据内容最后一个字节,变长 |} =====数据命令以及数据内容表===== {| class="wikitable sortable" |- ! 命令序号 !! 命令内容 !! 是否需要回复!! 备注 |- |1,STM32主动上传状态||见'''STM32上传状态表'''||0表示无需返回,1表示需要返回|| |- |2,335X应答STM32主动上传状态||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回|| |- |3,STM32主动上传软件版本||例如,"HM70.A8.01",10个字节长度||0表示无需返回,1表示需要返回|| |- |4,335X应答STM32主动上传软件版本||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回|| |- |5,STM32主动上传硬件版本||例如,"HMHD70.A8",9个字节长度||0表示无需返回,1表示需要返回|| |- |6,335X应答STM32主动上传硬件版本||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回|| |- |7,335X主动发送控制命令给STM32||见'''335X控制命令表'''||0表示无需返回,1表示需要返回|| |- |8,STM32应答335X主动发送控制命令||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回|| |- |9,335X读取STM32硬件版本号||无||0表示无需返回,1表示需要返回|| |- |10,STM32回复硬件版本号||例如,"HMHD70.A8",9个字节长度||0表示无需返回|| |- |11,335X读取STM32软件版本号||无||0表示无需返回,1表示需要返回|| |- |12,STM32回复软件版本号||例如,"HM70.A8.01",10个字节长度||0表示无需返回|| |} =====STM32上传状态表===== {| class="wikitable sortable" |- ! 状态数据!! 说明 |- |0x70,一个字节||表示7寸平板电脑 |- |0xXX 0xXX 2个字节||A路PT100电阻ADC值(正常使用路)(低位在前) |- |0xXX 0xXX 2个字节||水箱水位计温度ADC值(低位在前) |- |0xXX 0xXX 2个字节||氢气检测传感器ADC值(低位在前) |- |0xXX 0xXX 2个字节||雾化器温度传感器ADC值(低位在前) |- |0xXX 0xXX 2个字节||风扇马达电磁阀电流抽样(低位在前) |- |0xXX 0xXX 2个字节||'''感应式雾化器水位计温度传感器ADC值,低位在前''' |- |0xXX 1个字节|| 备用 |- |0xXX 0xXX2个字节|| 表示散热器PWM调速风扇1转速,低位在前,高位在后; |- |0xXX 1个字节|| 备用 |- |0xXX 0xXX2个字节|| 表示散热器PWM调速风扇2转速,低位在前,高位在后; |- |0xXX 1个字节|| 感应式雾化器水位计接口。0000 00XXB,最低位水位低GPIO状态,第二位水位高GPIO状态('''水位计潓美生产,状态表示由潓美定义''')) |- |0xXX 1个字节|| 湿化杯电容式水位计状态。0000 XXXXB,最低为表示低水位GPIO状态,第二位表示中水位GPIO状态,第三位表示高水位GPIO状态,第4位表示超高水位GPIO状态。('''水位计潓美生产,状态表示由潓美定义''') |- |0xXX 1个字节|| 注水口盖GPIO状态。0表示低电平,1表示高电平,其他无效。状态惠美定义 |- |0xXX 1个字节|| 氢水杯水位状态。0000 00XXB,最低为表示氢水杯水位高状态,第二位表示氢水杯水位低状态。 |- |0xXX 1个字节|| '''氢气浓度周期小于等于410时,此值无效。氢气浓度周期大于等于410时,表示氢气浓度GPIO状态,0表示低电平,1表示高电平。(J15连接器 1PIN脚状态)''' |- |0xXX 2个字节|| 氢气浓度周期,单位ms |- |0xXX 1个字节|| 备用 |- |0xXX 1个字节|| 备用 |- |0xXX 1个字节|| 备用 |- |0xXX 1个字节|| 备用 |- |0xXX 1个字节|| 备用 |- |0xXX 1个字节|| 按键GPIO状态上报,GPIO状态为0时,上报0xA0;GPIO状态为1时,上报状态为0xA1;GPIO状态为没有采集到有效数据时,上报状态为0xA2; |} =====335X控制命令表===== {| class="wikitable sortable" |- ! 控制命令 !! 说明 |- |0xXX 一个字节|| 主机开启关闭标识 0x00 表示335X主机正常工作,0x01表示335X 主机将关闭。STM32收到关闭命令后1S关闭CH2电源,2S后关闭335X电源 |- |0xXX 一个字节|| 散热器PWM调速风扇1控制PWM,0 到 100,对应PWM 的0% 到 100%。'''GPIO0_12控制风扇打开关闭,低电平风扇打开''' |- |0xXX 一个字节|| 散热器PWM调速风扇2控制PWM,0 到 100,对应PWM 的0% 到 100%。'''GPIO0_7控制风扇打开关闭,低电平风扇打开''' |- |0xXX 一个字节|| 雾化量控制,0 到 100.'''潓美有两种雾化器,一种雾化器,0时雾化量最大,一种雾化器0时雾化量最小''' |- |0xXX 一个字节|| 电磁阀3(J25)控制标识 0x00 标识关闭电磁阀3,0x01打开电磁阀3 |- |0xXX 一个字节|| LED效果灯控制 0x01或0x00。0时STM32控制LED灯GPIO为低电平,1时STM32控制LED灯GPIO为高电平。'''LED板子为潓美设计,高电平LED灯亮''' |- |0xXX 一个字节|| 2,锁住清水杯;1,释放清水杯 |- |0xXX 一个字节|| 2,氢气浓度超标,1,氢气浓度未超标,其他,氢气浓度不超标。 |- |0xXX 一个字节|| 备用 |- |0xXX 一个字节|| 备用 |- |0xXX 一个字节|| 备用 |- |0xXX 一个字节|| 备用 |- |0xXX 一个字节|| 备用 |- |0xXX 一个字节|| 备用 |- |0xXX 一个字节|| 备用 |- |0xXX 一个字节|| 0xA1,关闭看门狗;0xA2,打开看门狗。(12分钟没有收到控制命令,重启335X功能) |}