==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功能)
|}