==项目说明==
*上海潓美医疗主要生产氢氧雾化机的企业。潓美平板电脑为氢氧雾化机的操作和控制设备，提供安全、可靠、人性化的用户体验。



==硬件部分==
*主要包括两块电路板。
===控制主板===
*基于AM3352为主控芯片，AM3352主要处理界面，操作控制，网络，WIFI、蓝牙以及语音等操作；STM32作为协处理器，主要用于数据采集、LED灯控制、按键采集等操作。

===LED灯板===
*主要用于LED灯闪烁，水杯检测、水位检测。

==软件部分==
*主要有AM3352+STM32两部分代码

===AM3352===
===STM32===

==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板；<br>0x81表示第一块STM32板，0x82表示第二块STM32电路板，0x83表示第二块STM32电路板，一个字节||0x01表示第一块CPU板，0x02表示第二块CPU板，0x03表示第三块CPU板；<br>0x81表示第一块STM32板，0x82表示第二块STM32电路板，0x83表示第二块STM32电路板；<br>0x80表示目的地址是广播给所有的CPU电路板，0xfe表示目的地址是所有的STM32电路板，0xff表示广播给系统中所有设备，其他地址备用，一个字节长度||数据命令以及数据内容部分数据长度，两个字节，高位在前||见数据命令以及数据内容表，变长
|}
=====数据命令以及数据内容表=====
{| class="wikitable sortable"
|-
! 命令序号   !! 命令内容 !! 是否需要回复
|-
|1，STM32主动上传状态(12寸没有这个命令，7寸、5寸、4.3寸有这个命令)||见'''STM32上传状态表'''||0表示无需返回，1表示需要返回
|-
|2，335X应答STM32主动上传状态||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回
|-
|3，STM32主动上传软件版本||例如，"HM70_001_01",11个字节长度||0表示无需返回，1表示需要返回
|-
|4，335X应答STM32主动上传软件版本||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回
|-
|5，STM32主动上传硬件版本||例如，"HMHD70_01",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.01",9个字节长度||0表示无需返回
|-
|11，335X读取STM32软件版本号||无||0表示无需返回，1表示需要返回
|-
|12，STM32回复软件版本号||例如，"HM70.001.01",11个字节长度||0表示无需返回
|-
|13，335X提出升级STM32代码||无||0表示无需返回，1表示需要返回
|-
|14，STM32回复335X提出升级STM32代码||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回
|-
|15，STM32提出升级STM32代码||无||0表示无需返回，1表示需要返回
|-
|16，335X回复STM32提出升级STM32代码||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回
|-
|17，335X发送代码数据长度给STM32||021739，6个字节长度||0表示无需返回，1表示需要返回
|-
|18，STM32应答335X发送代码数据长度给STM32||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回
|-
|19，335X发送代码数据给STM32||见'''335X发送代码数据给STM32数据内容表'''||0表示无需返回，1表示需要返回
|-
|20，STM32应答335X发送代码数据给STM32||'''STM32应答335X发送代码数据给STM32表'''||0表示无需返回
|-
|21，335X发送数据升级完毕||无||0表示无需返回，1表示需要返回
|-
|22，STM32应答335X发送数据升级完毕||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回
|-
|23，335X发送进入测试模式命令||无||0表示无需返回，1表示需要返回
|-
|24，STM32应答进入测试模式||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回
|-
|25，STM32发送自动检测结果||STM32自动检测结果'，'''STM32自动检测结果表'''||0表示无需返回，1表示需要返回
|-
|26，335X应答STM32自测结果||数据正常应答0x00,错误应答0x01,一个字节长度||0表示无需返回
|-
|'''27(12寸)'''，主机读取STM32系统状态||无||1表示无需返回
|-
|'''28(12寸)'''，STM32反馈系统状态||'''STM32应答主机状态,见12寸STM32状态表'''||0表示无需返回
|-
|29，STM32 请求软件关机 335X命令||无||0表示无需返回
|-
|30，335X应答关机命令||无||0表示无需返回
|}

=====STM32上传状态表（7寸，4.3寸、5寸）=====
{| class="wikitable sortable"
|-
! 状态数据!! 说明
|-
|0x70，一个字节||表示7寸，4.3寸，5寸横屏，5寸竖屏平板电脑
|-
|0xXX 0xXX 2个字节||电源CH1路电压
|-
|0xXX 0xXX 2个字节||水位计温度
|-
|0xXX 0xXX 2个字节||CH1电流
|-
|0xXX 0xXX 2个字节||雾化器温度
|-
|0xXX 0xXX 2个字节||风扇马达电磁阀电流抽样
|-
|0xXX 0xXX 2个字节||氢气浓度
|-
|0xXX 1个字节|| '''7寸用于氢水杯水位低标识，0x00表示水位正常，0x01表示水位低，其他表示数据异常''','''5寸用于湿化杯 水位低标识，0x01表示水位正常，0x00表示水位低，其他表示数据异常'''
|-
|0xXX 1个字节|| '''氢水杯水位高标识，0x01表示水位不高，0x00表示水位高，其他表示数据异常'''，'''5寸用于湿化杯 水位高标识，0x01表示水位不高，0x00表示水位高，其他表示数据异常'''，
|-
|0xXX 1个字节|| 接地检测标识，0x00表示接地正常，0x01表示接地错误，其他表示数据异常
|-
|0xXX 1个字节|| 水箱水位计在线标示，0表示水箱水位计在线，1表示水箱水位计不在线，其他表示数据异常
|-
|0xXX 1个字节|| 雾化杯水位低标识，0x00表示水位正常，0x01表示水位低，其他表示数据异常
|-
|0xXX 1个字节|| 雾化杯水位高标识，0x01表示水位不高，0x00表示水位高，其他表示数据异常
|-
|0xXX 1个字节|| 电源风扇故障标识，0x0表示风扇OK,0x01 表示 风扇故障，其他表示数据异常
|-
|0xXX 0xXX2个字节|| 表示风扇转速高位在前，低位在后，此位才有效
|}

=====12寸 STM32上传状态表=====
{| class="wikitable sortable"
|-
! 序号   !! 状态数据!! 说明
|-
|1||0x12，一个字节||表示12寸主板
|-
|2||0xXX 0xXX 2个字节||电源CH1路电压
|-
|3||0xXX 0xXX 2个字节||水位计温度
|-
|4||0xXX 0xXX 2个字节||CH1电流
|-
|5||0xXX 0xXX 2个字节||雾化器温度
|-
|6||0xXX 0xXX 2个字节||风扇马达电磁阀电流抽样
|-
|7||0xXX 0xXX 2个字节||雾化器定位器电压
|-
|8||0xXX 0xXX 2个字节||电机1电流
|-
|9||0xXX 0xXX 2个字节||电机2电流
|-
|10||0xXX 0xXX 2个字节||氢气浓度
|-
|11||0xXX 1个字节|| 氢水杯水位低标识，0x00表示水位正常，0x01表示水位低，其他表示数据异常
|-
|12||0xXX 1个字节|| 氢水杯水位高标识，0x01表示水位不高，0x00表示水位高，其他表示数据异常
|-
|13||0xXX 1个字节|| 接地检测标识，0x00表示接地正常，0x01表示接地错误，其他表示数据异常
|-
|14||0xXX 1个字节|| 水箱水位低标识，0x00表示水位正常，0x01表示水位低，其他表示数据异常
|-
|15||0xXX 1个字节|| 水箱水位高标识，0x01表示水位不高，0x00表示水位高，其他表示数据异常
|-
|16||0xXX 1个字节|| 水箱水位计在线标示，0表示水箱水位计在线，1表示水箱水位计不在线，其他表示数据异常
|-
|17||0xXX 1个字节|| 感应式雾化杯水位低标识，0x00表示水位正常，0x01表示水位低，其他表示数据异常
|-
|18||0xXX 1个字节|| 感应式雾化杯水位高标识，0x01表示水位不高，0x00表示水位高，其他表示数据异常
|-
|19||0xXX 1个字节|| 雾化器自带水位低标识，0x01表示水位低，0x00表示水位不低，其他表示数据异常
|-
|20||0xXX 1个字节|| 电源风扇故障标识，0x0表示风扇OK,0x01 表示 风扇故障，其他表示数据异常
|-
|21||0xXX 0xXX2个字节|| 表示风扇转速高位在前，低位在后，此位才有效
|-
|22||0xXX 1个字节|| 电源风扇故障标识，0x0表示风扇OK,0x01 表示 风扇故障，其他表示数据异常
|-
|23||0xXX 1个字节|| 氢气浓度标识，0x00表示氢气浓度正常，其他表示数据异常
|-
|24||0xXX 1个字节|| 雾化器开关状态，0x01 雾化器开关关闭，0x02 雾化器开关打开，0x03 雾化器开关打开，并且雾化器正在工作
|-
|25||0xXX 1个字节|| 雾化器强度等级，0 - 10,0最小
|-
|26||0xXX 1个字节|| 低电平DC  OK,高电平 DC ERR
|-
|27||0xXX 1个字节|| 电机1状态，0，电机在屏幕关闭停止状态，1电机在打开屏幕运行状态，2电机在打开屏幕停止状态，3电机在关闭屏幕运行状态，4电机状态错误
|-
|28||0xXX 1个字节|| 电机2状态，0，电机在屏幕关闭停止状态，1电机在打开屏幕运行状态，2电机在打开屏幕停止状态，3电机在关闭屏幕运行状态，4电机状态错误.'''电机1与电机2状态不一致为错误'''
|}

=====335X控制命令表=====

{| class="wikitable sortable"
|-
! 控制命令 !! 说明
|-
|0xXX 一个字节|| 雾化量控制 0x00 标识雾化量最小，0x64（100）标识雾化量最大
|-
|0xXX 一个字节|| LED效果灯控制 0x00 表示效果灯关闭，0x01表示效果灯开启
|-
|0xXX 一个字节|| 主机开启关闭标识 0x00 表示335X主机正常工作，0x01表示335X 主机将关闭。STM32收到关闭命令后30秒后关闭CH2电源
|-
|0xXX 一个字节|| 控制新增加水泵标识 0x00 标识关闭新增加的水泵(水泵2)，0x01打开新增加水泵
|-
|0xXX 一个字节|| 控制新增电磁阀A标识 0x00 标识关闭新增电磁阀A，0x01打开新增电磁阀A
|-
|0xXX 一个字节|| 控制新增电磁阀B标识 0x00 标识关闭新增电磁阀B，0x01打开新增电磁阀B
|-
|0xXX 一个字节|| 控制继电器开关A标识 0x00 标识关闭继电器开关A，0x01打开继电器开关A
|-
|0xXX 一个字节|| 控制继电器开关B标识 0x00 标识关闭继电器开关B，0x01打开继电器开关B
|-
|0xXX 一个字节|| 控制臭氧发生器泵标识 0x00 标识关闭臭氧发生器泵，0x01打开臭氧发生器泵
|-
|0xXX 一个字节|| 控制臭氧发生器标识 0x00 标识关闭臭氧发生器，0x01打开臭氧发生器
|-
|0xXX 一个字节|| 用于调节电源风扇控制PWM，0 到 100，对应PWM 的0% 到 100%，在PWM等于0，STM32认为电源风扇关闭，大于0时电源风扇开启，可以检测电源风扇是否正常，以及测试转速等。20160608新增加
|}
=====STM32自动检测结果表=====
{| class="wikitable sortable"
|-
! 标识 !! 说明
|-
|0xXX 一个字节|| 感应按键标识 0x00 感应按键异常，0x01 感应按键正常
|-
|0xXX 一个字节|| 雾化器PWM控制标识 0x00 雾化器控制PWM异常，0x01 雾化器控制PWM正常
|-
|0xXX 一个字节|| 雾化器温度标识 0x00 雾化器温度异常，雾化器水位异常，0x01 雾化器温度正常，雾化器水位正常
|-
|0xXX 一个字节|| 电源风扇PWM以及电源风扇转速 0x00 电源风扇PWM以及电源风扇转速异常，0x01 电源风扇PWM以及电源风扇转速正常
|-
|0xXX 一个字节|| CH2控制标识 0x00 CH2控制异常，0x01 CH2控制正常
|-
|0xXX 一个字节|| 氢气浓度模拟信号标识 0x00 氢气浓度模拟信号异常，0x01 氢气浓度模拟信号正常
|-
|0xXX 一个字节|| 氢水杯水位高低标识 0x00 氢水杯水位高低异常，0x01 氢水杯水位高低正常
|-
|0xXX 一个字节|| LED灯控制标识 0x00 LED灯控制异常，0x01 LED灯控制正常
|-
|0xXX 一个字节|| 新增电磁阀A(电磁阀3)标识 0x00 新增电磁阀A(电磁阀3)异常，0x01 新增电磁阀A(电磁阀3)正常
|-
|0xXX 一个字节|| 新增电磁阀B(电磁阀4)标识 0x00 新增电磁阀B(电磁阀4)异常，0x01 新增电磁阀B(电磁阀4)正常
|-
|0xXX 一个字节|| 新增水泵（水泵2）标识 0x00 新增水泵（水泵2）异常，0x01 新增水泵（水泵2）正常
|-
|0xXX 一个字节|| 臭氧发生器泵标识 0x00 臭氧发生器泵异常，0x01 臭氧发生器泵正常
|-
|0xXX 一个字节|| 臭氧发生器标识 0x00 臭氧发生器异常，0x01 臭氧发生器正常
|-
|0xXX 一个字节||水箱温度标识 0x00 水箱温度异常，0x01 水箱温度正常
|}

=====测试夹具335x自检说明=====
{| class="wikitable sortable"
|-
!检测部件 !! GPIO !! 输入输出方向 !!  说明
|-
|雾化器电源控制|| GPIO1_16|| 输出|| 低电平时，检测电流大概为0 - 20mA左右，高电平时，检测电流为80mA左右为正常，偏差过大（超过50mA）为异常
|-
|J17（真空泵）|| GPIO1_26|| 输出|| 低电平时，检测电流大概为0 - 20mA左右，高电平时，检测电流为80mA左右为正常，偏差过大（超过50mA）为异常
|-
|J18（湿化杯电磁阀）|| GPIO3_19|| 输出|| 低电平时，检测电流大概为0 - 20mA左右，高电平时，检测电流为80mA左右为正常，偏差过大（超过50mA）为异常
|-
|J19（集水槽电磁阀）|| GPIO3_18|| 输出|| 低电平时，检测电流大概为0 - 20mA左右，高电平时，检测电流为80mA左右为正常，偏差过大（超过50mA）为异常
|-
|J16（循环水泵控制脚），J15（氢气浓度数字信号脚）|| GPIO1_25，GPIO3_16|| GPIO1_25输出，GPIO3_16输入|| GPIO1_25输出高时，GPIO3_16输入低；GPIO1_25输出低时，GPIO3_16输入高，为正常，其他状态异常 
|-
|J41(可控转速风扇电源控制脚)，J14（水箱水位高）|| GPIO0_12，GPIO1_21|| GPIO0_12输出，GPIO1_21输入|| GPIO0_12输出高时，GPIO1_21输入低；GPIO0_12输出低时，GPIO1_21输入高，为正常，其他状态异常 
|-
|J12(散热器风扇电源控制脚)，J14（水箱水位低）||GPIO1_18，GPIO1_22|| GPIO0_18输出，GPIO1_22输入|| GPIO0_18输出高时，GPIO1_22输入低；GPIO0_18输出低时，GPIO1_22输入高，为正常，其他状态异常 
|-
|J13(冷凝器风扇电源控制脚)，J33（氢水杯有无）||GPIO1_24，GPIO1_23|| GPIO1_24输出，GPIO1_23输入|| GPIO1_24输出高时，GPIO1_23输入低；GPIO1_24输出低时，GPIO1_23输入高，为正常，其他状态异常
|}
=====夹具测试部分注意事项=====
*'''在335x发送测试命令给STM32后，STM32不能去操作风扇马达等设备；'''
*'''STM32收到测试命令后，做应答，并且进入测试模式，在测试模式下，STM32不实时发送状态命令。大概在10秒左右，上传测试报告，收到335X测试报告应答后，退出测试模式，进入正常程序。STM32未收到测试报告应答，会每2秒发送一次测试报告，重复5次。5次后未收到应答，自动退出测试模式，进入正常程序。'''

=====335X发送代码数据给STM32数据内容表=====
{| class="wikitable sortable"
|-
! 代码包序号 !! 代码数据 !! 校验
|-
|0x0001，两个字节，高位在前，表示第一包数据，依次递增||代码数据，512个字节，不够512字节补充0xff||代码数据位（512个字节）CRC16校验，两个字节长度，低位在前，高位在后
|}

=====STM32应答335X发送代码数据给STM32表=====
{| class="wikitable sortable"
|-
! 代码包序号 !! 应答码
|-
|0x0001，两个字节，高位在前，表示第一包数据，依次递增||0x00表示数据正常，0x01表示错误
|}

=======CRC校验算法=======

'''#'''define CRC1(crc,byte) (((crc) >> 8 ) ^ tabel[((crc) ^ (unsigned int) (byte)) & 0XFF]) 

CPU_INT16U const tabel[256]={
  0X0000, 0XC0C1, 0XC181, 0X0140, 0XC301, 0X03C0, 0X0280, 0XC241,  
  0XC601, 0X06C0, 0X0780, 0XC741, 0X0500, 0XC5C1, 0XC481, 0X0440,  
  0XCC01, 0X0CC0, 0X0D80, 0XCD41, 0X0F00, 0XCFC1, 0XCE81, 0X0E40,  
  0X0A00, 0XCAC1, 0XCB81, 0X0B40, 0XC901, 0X09C0, 0X0880, 0XC841,  
  0XD801, 0X18C0, 0X1980, 0XD941, 0X1B00, 0XDBC1, 0XDA81, 0X1A40,  
  0X1E00, 0XDEC1, 0XDF81, 0X1F40, 0XDD01, 0X1DC0, 0X1C80, 0XDC41,  
  0X1400, 0XD4C1, 0XD581, 0X1540, 0XD701, 0X17C0, 0X1680, 0XD641,  
  0XD201, 0X12C0, 0X1380, 0XD341, 0X1100, 0XD1C1, 0XD081, 0X1040,  
  0XF001, 0X30C0, 0X3180, 0XF141, 0X3300, 0XF3C1, 0XF281, 0X3240,  
  0X3600, 0XF6C1, 0XF781, 0X3740, 0XF501, 0X35C0, 0X3480, 0XF441,  
  0X3C00, 0XFCC1, 0XFD81, 0X3D40, 0XFF01, 0X3FC0, 0X3E80, 0XFE41,  
  0XFA01, 0X3AC0, 0X3B80, 0XFB41, 0X3900, 0XF9C1, 0XF881, 0X3840, 
  0X2800, 0XE8C1, 0XE981, 0X2940, 0XEB01, 0X2BC0, 0X2A80, 0XEA41,  
  0XEE01, 0X2EC0, 0X2F80, 0XEF41, 0X2D00, 0XEDC1, 0XEC81, 0X2C40,  
  0XE401, 0X24C0, 0X2580, 0XE541, 0X2700, 0XE7C1, 0XE681, 0X2640,  
  0X2200, 0XE2C1, 0XE381, 0X2340, 0XE101, 0X21C0, 0X2080, 0XE041,  
  0XA001, 0X60C0, 0X6180, 0XA141, 0X6300, 0XA3C1, 0XA281, 0X6240,  
  0X6600, 0XA6C1, 0XA781, 0X6740, 0XA501, 0X65C0, 0X6480, 0XA441,  
  0X6C00, 0XACC1, 0XAD81, 0X6D40, 0XAF01, 0X6FC0, 0X6E80, 0XAE41,  
  0XAA01, 0X6AC0, 0X6B80, 0XAB41, 0X6900, 0XA9C1, 0XA881, 0X6840,  
  0X7800, 0XB8C1, 0XB981, 0X7940, 0XBB01, 0X7BC0, 0X7A80, 0XBA41,  
  0XBE01, 0X7EC0, 0X7F80, 0XBF41, 0X7D00, 0XBDC1, 0XBC81, 0X7C40,  
  0XB401, 0X74C0, 0X7580, 0XB541, 0X7700, 0XB7C1, 0XB681, 0X7640,  
  0X7200, 0XB2C1, 0XB381, 0X7340, 0XB101, 0X71C0, 0X7080, 0XB041,  
  0X5000, 0X90C1, 0X9181, 0X5140, 0X9301, 0X53C0, 0X5280, 0X9241,  
  0X9601, 0X56C0, 0X5780, 0X9741, 0X5500, 0X95C1, 0X9481, 0X5440,  
  0X9C01, 0X5CC0, 0X5D80, 0X9D41, 0X5F00, 0X9FC1, 0X9E81, 0X5E40,  
  0X5A00, 0X9AC1, 0X9B81, 0X5B40, 0X9901, 0X59C0, 0X5880, 0X9841,  
  0X8801, 0X48C0, 0X4980, 0X8941, 0X4B00, 0X8BC1, 0X8A81, 0X4A40,  
  0X4E00, 0X8EC1, 0X8F81, 0X4F40, 0X8D01, 0X4DC0, 0X4C80, 0X8C41,  
  0X4400, 0X84C1, 0X8581, 0X4540, 0X8701, 0X47C0, 0X4680, 0X8641,  
  0X8201, 0X42C0, 0X4380, 0X8341, 0X4100, 0X81C1, 0X8081, 0X4040 
};

static CPU_INT16U CalcCRC(CPU_INT08S *data, CPU_INT32S size)
{
	CPU_INT32S i; 						 
	CPU_INT16U crc = 0; 
 	for (i = 0; i < size; i++) 
	{ 
  		crc = CRC1(crc, data[i]); 
 	} 
 	return crc; 
}

=====说明=====
*
*
*
*
*
*
*
*
*
*

==AM3352 GPIO对应动作说明==

{| class="wikitable sortable"
|-
! GPIO    !! I/O !! Function
|-
|GPIO1_17  ||输入||雾化器水位检测，0时水位正常，1时水位低(雾化器必须上电)
|-
|GPIO1_16  ||输出||控制雾化器工作与否，0时雾化器工作，1时雾化器停止工作
|-
|GPIO1_18  ||输出||散热器风扇控制，0时风扇工作，1是风扇停止
|-
|GPIO1_24  ||输出||冷凝器风扇控制，0时风扇工作，1是风扇停止
|-
|GPIO0_20  ||输出||电源风扇控制，0时风扇工作，1是风扇停止
|-
|GPIO1_22  ||输入||水位计水位低检测，0时表示水位低，1时表示水位不低
|-
|GPIO1_21  ||输入||水位计水位高检测，0时表示水位高，1时表示水位不高
|-
|GPIO1_23  ||输入||水杯检测，0时表示水杯在，1时表示水杯不在
|-
|GPIO3_16  ||输入||用于氢气检测，'''备用'''
|-
|GPIO1_25  ||输出||控制循环水泵，1时水泵开启，0时水泵关闭
|-
|GPIO1_26  ||输出||控制真空泵，1时泵开启，0时泵关闭
|-
|GPIO3_19  ||输出||控制湿化杯电磁阀，1时电磁阀开启，0时电磁阀关闭
|-
|GPIO3_18  ||输出||控制集水槽电磁阀，1时电磁阀开启，0时电磁阀关闭
|-
|GPIO2_01  ||输入||检测CH1电源输出，0时表示电源输出正常，1是表示电源输出关闭或异常
|-
|GPIO1_19  ||输入||用于控制CH1电源输出换向，输出0时，输出极性默认，输出为1时，输出极性变化
|-
|GPIO1_20  ||输出||用于控制CH1电源输出，输出0时，CH1输出关闭，输出1时，CH1输出打开
|-
|GPIO3_14  ||输入||用于检测电源温度。输入为0时，表示电源温度正常；输入为1时，表示电源温度过高。需要记录温度过高以及温度过高的时间
|-
|GPIO1_27  ||输出||控制HC08蓝牙模块的PIO12，'''HM7寸A4板无'''
|-
|GPIO2_0  ||输出||控制HC08蓝牙模块复位，低电平复位，'''要求不小于 5ms 的低电平进行复位'''
|-
|GPIO3_16||输入||氢气浓度阀值检测，低电平，氢气浓度不到阀值，高电平，氢气浓度达到阀值
|}


* am335x gpio linux 控制 参考脚本: https://gist.github.com/c2h2/a540df4cacbd15de0db4

==AM3352 IIC 触摸屏接口说明==
*IIC2控制触摸屏，其中 GPIO0_13  IIC_SCL, GPIO0_12  IIC_SDA, 触摸屏 复位 GPIO3_20，触摸屏中断  GPIO3_21

==AM3352 SPI 控制电阻输出说明接口说明==
*SPI0 控制 AD8400ARZ10 调整电阻值，调整电压控制CH1输出电流，SPI0_CS,GPIO0_5，SPI0_CLK GPIO0_2，SPI0_MISO GPIO0_4，SPI0_MOSI GPIO0_3
==AD数据说明==
*水位计电阻计算公式：(10 + R)/10 = 4096 / A,其中R为水位计热敏电阻阻值，A为水位计温度AD值，通过A值求出电阻值R，通过水位计电阻表转化得到温度值
*雾化器电阻计算公式：(10 + R)/10 = 4096 / A,其中R为水位计热敏电阻阻值，A为雾化器温度AD值，通过A值求出电阻值R，通过表雾化器电阻转化得到温度值

*台达电源检测
**台达电源电流检测：I = V*9.96,V / 25 = v / 15，v / 3.3 = A / 4096,A 为AD 值
**台达电源CH1电压检测：Vo = 2.9292 * V + 16,V / 52.1 = v / 5.1,V位CH1 电压值，v / 3.3 = A / 4096,A 为AD 值,Vo 为 CH1电压值

*风扇马达电磁阀电流抽样
** I = v / 0.05，v = V / 21,V / 3.3 = A / 4096,A 为AD 值（STM32发送值为A,I 电流）。

==AM3352 通过UART1串口 与 STM32 通讯==

==AM3352 通过 SPI 口调节输出电压控制电解量==
*在0V ~ 5V的电压输入下，恒流工作点可以在28A ~ 40.8A之间线性变化。SPI接口输出0，电压输出5V，SPI输出255，电压输出0V，之间线性变化。

==潓美7寸A3平板电脑电源控制==
在软件中，需要兼容新老电源，分别用于控制老电源和新电源

===台达电源（新电源）控制说明===
宏达新电源主要需要如下检测和控制
*CH1电压（电解池电压）输出控制：AM335X GPIO1_20高电平，CH1输出，GPIO1_20低电平，CH1输出关闭；
*CH1电压反向控制：GPIO1_19低电平，CH1电压正向输出，AM335X GPIO1_19高电平，CH1电压反向输出；
*CH1输出电流调节：SPI输出电压控制，在0V ~ 5V的电压输入下，恒流工作点可以在28A ~ 40.8A之间线性变化；
*CH1电流检测：I = V*10,V / 25 = v / 15，v / 3.3 = A / 4096,A 为AD 值
*CH1电压检测：：V / 52.1 = v / 5.1,V位CH1 电压值，v / 3.3 = A / 4096,A 为AD 值
*CH1输出电压OK检测：
*CH2输出控制：STM32 PB1脚控制，高电平CH2输出，低电平CH1关闭
*电源过温报警检测：温度正常，GPIO3_14为低电平，过温时，GPIO3_14为高电平
*交流接地正常与否检测：STM32 PC13脚，高电平接地异常，低电平 接地OK
===硬件测试===
*AT070TN92屏接上后电流为198ma，去掉AT070TN92屏后，电流102ma，屏消耗电流96ma，即0.096x24 = 2.3W功耗。背光电压为9.7V,背光电流178.9ma，背光消耗1.735W.
*LED显示屏背光测试
断掉STM32的使能信号，使用信号发生器测试，使能信号在100KHz下，其占空比与主板加显示屏的总功率的关系：
0%占空比：2.401W
20%占空比：2.880W
40%占空比：3.360W
60%占空比：3.840W
80%占空比：4.320W
100%占空比：4.800W
规律呈等差数列，公差为0.48。可以算出显示屏的功率=2.4*占空比。
现象：亮度可以调到差不多灭屏，0%到20%占空比时较明显。

==硬件调试记录==



==手机APP远程操作设备==



===手机登录设备===




==软件测试==


==对接协议部分==
===注册部分===
设备上电后,若配置了自动注册部分，会主动通过http连接服务器.
*获得注册代理部分
设备上电后主动询问注册地址:<br>GET http://XXXXXXXXX/api/v1/register?device_id=设备序列号.<br>
服务器回应错误或者内容或者非法的url则设备放弃注册.

当device_id参数没有时，返回：
    {:status => "error", :message => "Required device_id param."}

正确回应为json格式如下:

    {"status":"success", "register_url": "http://example.com:8001/api/v1/register"}

*转私有协议
　　若正确解析了服务器地址和端口则开启私有协议注册流程.

===版本部分===
设备上电后,若配置了服务器部分，会主动通过http连接服务器.
*向服务器查询版本信息
设备上电后主动服务器查询版本信息:<br>GET http://XXXXXXXXX/api/v1/versions/latest_firmware?device_id=设备序列号&type=类型.<br>
服务器回应错误或者内容或者非法的url则设备放弃注册.
正确回应为json格式如下:<br>{<br>"device": "asclepius_2102"<br>"version": "1.2.3"<br>"download_url": "http://example.com/api/v1/versions/downloads/asclepius_clients/asclepius_1.2.3.zip"<br>"released_at": "2015-01-11 11:11:11"<br>  "update_notes": "本次更新有以下内容，bala bala bala bala bala bala bala bala bala ..."<br>}<br>
*http下载版本
　　若正确解析了下载url则通过http的get获取版本.
*版本下载完毕后自动重启机器进行升级
*升级完成后自动重启机器运行

===日志部分===
https://git.g77k.com/snippets/34

===广播部分===
https://git.g77k.com/snippets/34
设备心跳包

===私有协议部分===
====设备控制网络协议====
*简介<br>本协议描述了通过网络控制机器相关信令及作用.<br>
*说明<br>协议版本适合所有机型.<br>
*信令格式
<br>点对点信令采用TCP格式，广播只支持设备主动发送发现包，组播上支持客户端主动搜索设备.<br>
<br>信令采用协议头＋协议内容，协议内容为json格式.<br>
<br>对于快速控制信令，协议内容均为空。在协议协议参数中填写相关控制参数即可.<br>
<br>本文中若未指定字节序情况下默认均为网络序.<br>
<br>Ｃ－客户端，手机客户端，信令代理等.<br>
<br>Ｓ－通常设备<br>
<br>消息分为请求，应答，通知；请求和应答为点对点，通知消息所有在线的客户端均会收到。客户端可不等待应答消息，直接解析通知消息即可。<br>
*协议头：
{| class="wikitable sortable"
|-
! 协议加密类型(4B)   !! 消息号(4B) !! 协议参数(4B)　!! 消息体长度(4B)
|-
|20160525,拆分为<br>2B-0,控制左侧主机:１－控制右侧主机;<br>2B－固定１,明码方式  ||消息定义见下||快速控制参数||不含本协议头的消息体长度
|}
本文中””代表string,否则为int
{| class="wikitable sortable"
|-
! 消息号   !! 消息体 !! 说明
|-
|emMsg_Search_ID||无||Ｃ>S
|-
|emMsg_Search_Nty  ||{ <br>&nbsp;device_uuid：“设备序列号”&nbsp;<br>device_soft_version：“设备软件版本”&nbsp;<br>device_hard_version：“设备硬件版本”&nbsp;<br>device_alias：“设备别名”&nbsp;<br>device_mac：“设备ＭＡＣ”&nbsp;<br>device_ipaddr：“设备IP”&nbsp;<br>port：设备端口&nbsp;<br>}&nbsp; ||S>C
|-
|emMsg_Register_Dev||消息体同emMsg_Search_Nty||C>S
|-
|emMsg_Register_Dev_Ack||<br>{<br>result：“OK”(其它失败)<br>device_uuid：“设备序列号”<br>其它不解析<br>}<br>||C>S
|-
|emMsg_UnRegister_Dev||消息体同emMsg_Search_Nty||S>C
|-
|emMsg_UnRegister_Dev_Ack||<br>{<br>result：“OK”(其它失败)<br>device_uuid：“设备序列号”<br>其它不解析<br>}<br>||C>S
|-
|emMsg_Login_Dev||<br>{<br>device_uuid：“设备序列号”<br>username：“用户名”<br>userpass：“用户密码”<br>method：“密码加密方式 ex:BASE64,MD5”<br>}<br>||C>S
|-
|emMsg_Login_Dev_Ack||<br>{<br>result：“OK”(其它失败)<br>device_uuid：“设备序列号”<br>其它先保留<br>}<br>||S>C
|-
|emMsg_Get_DevData||无||C>S
|-
|emMsg_Get_DevData_Ack||<br>{<br>device_uuid:”序列号”<br>device_soft_version:”软件版本”<br>device_hard_version:”硬件版本”<br>device_netpass:”网络访问密码”<br>device_alias:”别名”<br>device_mac:”MAC”<br>dev_work_duration:总工作时间<br>dev_check_duration:上次检查经历时间<br>dev_startup_time:初次开机时间<br>dev_work_mode:机器类型<br>time_zone:时区<br>language:语言<br>accpet:授权时间<br>r1:保留<br>}<br>||S>C
|-
|emMsg_Set_DevData||同emMsg_Get_DevData_Ack||C>S
|-
|emMsg_Set_DevData_Ntf||同emMsg_Get_DevData_Ack||S>C 通知所有
|-
|emMsg_Get_DevNetData||无||C>S
|-
|emMsg_Get_DevNetData_Ack||{<br>ntpenabled:使能<br>ntp_svr_ip:”ntp服务URL”<br>ntp_svr_port:ntp服务端口<br>net_ver_enabled:升级使能<br>net_ver_ip:”版本服务URL”<br>net_ver_port: 版本服务端口<br>net_rcv_enabled:使能平台推送服务<br>net_rcv_url:”服务发布URL”<br>net_rcv_port:服务发布端口<br>net_rcv_type:服务发布类型<br>net_snd_enabled:使能主动上报服务<br>net_snd_url:”上报接收URL”<br>net_snd_port:上报服务端口<br>net_snd_type:上报服务类型 <br>}<br>||S>C 
|-
|emMsg_Set_DevNetData||同emMsg_Get_DevNetData_Ack||C>S
|-
|emMsg_Set_DevNetData||同emMsg_Get_DevNetData_Ack||C>S
|-
|emMsg_Set_DevNetData_Ntf||同emMsg_Get_DevNetData_Ack||S>C 通知所有
|-
|emMsg_Select_User_Time||更改工作时间，快速控制参数填时间必须时３０分钟倍数且大于３０小于２４０||C>S机器开始工作后禁止更改
|-
|emMsg_Select_User_Time_Ntf||更改工作时间，快速控制参数填时间必须时３０分钟倍数且大于３０小于２４０||S>C 通知所有
|-
|emMsg_Select_User_Time_Ack||<br>｛<br>result：“Already RUN<br>”<br>device_uuid：“设备序列号”<br>其它先保留<br>}<br>||S>C
|-
|emMsg_Start_User_Work||开始工作,无消息体||C>S
|-
|emMsg_Start_User_Work_Ack||｛<br>result：“Already RUN”<br>device_uuid：“设备序列号”<br>其它先保留<br>}<br>||S>C
|-
|emMsg_Start_User_Work_Ntf||开始工作通知||S>C 通知所有
|-	
|emMsg_Stop_User_Work||停止工作,无消息体||C>S
|-
|emMsg_Stop_User_Work_Ack||｛<br>result：“Not RUN”<br>device_uuid：“设备序列号”<br>其它先保留<br>}<br>||S>C
|-
|emMsg_Stop_User_Work_Ntf||停止工作通知,无消息体||S>C 通知所有
|-
|emMsg_Change_User_InBreathe||更改雾化量,快速控制参数填写雾化值,随时可调||C>S
|-
|emMsg_Change_User_InBreathe_Ntf||更改雾化量,快速控制参数填写雾化值||S>C 通知所有
|-
|emMsg_Change_User_HyDrogen||更改产气量,快速控制参数填写值,随时可调（０小－１中－２大）||C>S
|-
|emMsg_Change_User_HyDrogen_Ntf||更改产气量,快速控制参数为产气量,（０小－１中－２大）||S>C 通知所有
|-
|emMsg_PowerOff||关机||C>S
|-
|emMsg_PowerOff_Ack||关机回应<br>｛<br>result：“OK”<br> device_uuid：“设备序列号”<br>其它先保留<br>}<br>||S>C 
|-
|emMsg_Page_Notify||用于同步告知客户端机器本地操作跳转到哪一页,若您是与机器一致客户端则需跳转到相同页||S>C 通知所有
|-
|emMsg_SetAlias_Cmd||设置设备别名<br>{<br>alias:”别名”<br>}<br>
|-
|emMsg_Ping_Dev||心跳(5秒３次无回应则认为对方掉线)||S>C,C>S
|-
|emMsg_Ping_Dev_Ack||心跳回应||S>C,C>S
|-
|emMsg_Get_UserData||获取用户列表<br>｛<br>refid：从０开始的id号<br> totalNum：一次传输个数<br>}<br>||Ｃ>S
|-
|emMsg_Get_UserData_Ack||获取用户列表<br>｛<br>user {<br>userid：从０开始的id号<br> username："名字"<br>userpass："密码目前未用"<br>user_tel："电话"<br>birthdate："电话"<br>med_record："病历代码"<br>user_gender：性别（０－女，１－男）<br>user_hydrogenvalue："电话"<br>user_inbreathevalue："电话"<br>user_custom_picpath："电话"<br>}}<br>||Ｃ>S
|}

==版本切换==
若建立文件/var/lib/medctrl/A2，则程序为A2版本，否则为A3以后版本<br>
若建立文件/var/lib/medctrl/oldp，则程序为老电源控制，否则为新电源<br>
这些切换后重启生效

==机器类型切换==
若在/etc/machinetype写入下列类型
{| class="wikitable sortable"
|-
! 写入内容   !! 机器类型 !! 说明
|-
|7H||7寸横屏|| 
|-
|4H||4.3寸竖屏||
|-
|5H||5寸横屏|| 
|-
|5V||5寸竖屏||
|-
|12H||12寸横屏||
|}
主机在获取STM版本后写入/tmp/hardware文件

==单板测试==
===测试准备===
台式电脑一台，RJ45网线,路由器一台<br>
将电脑和单板联通<br>
单板使用测试SD卡启动<br>
Windows上测试工具http://ascleway.g77k.com/system/TestTools_Setup.exe

===需要设备===
1、潓美7寸电源（台达 MEB-1K2ATAT ZZB 电源，1175W最新电源，带I2C控制电源），电源上CN1005接口接于新技 电路板NT1529A4上 J8接口；电源上CN1003 接口接于 新技电路板 J21 接口。线束定义见 文档 潓美7寸屏A4版本接口定义描述160526.xls。<br>
*a.需要台达电源MEB-1K2ATAT ZZB   只;
*b.需要J21 线束   根，线长度   cm；
*c.需要J8处线束  根，线长度   cm；
2、24V散热器风扇。板子上对应的接口是J12。线序见 接口定义描述文档。<br>
3、24V真空泵。板子上对应的接口是J17.线序见 接口定义描述文档。<br>
4、24V循环水泵。板板子上对应的接口是J16线序见 接口定义描述文档。<br>
5、24V湿化杯电磁阀。板子上对应的接口是J18.线序见 接口定义描述文档。<br>
6、24V集水槽电磁阀。板子上对应的接口是J19。线序见 接口定义描述文档。<br>
7、24V冷凝器风扇。板子上对应的接口是J13。线序见 接口定义描述文档。<br>
8、24V可调风速风扇。板子上对应的接口是J41。线序见 接口定义描述文档。<br>
9、24V电磁阀。板子上对应的接口是J25，线序见 接口定义描述文档。<br>
10、24V电磁阀。板子上对应的接口是J26，线序见 接口定义描述文档。<br>
11、24V水泵。板子上对应的接口是J29，线序见 接口定义描述文档。<br>
12、24V臭氧发生器泵。板子上对应的接口是J38，线序见 接口定义描述文档。<br>
13、12V 臭氧发生器。板子上对应的接口是J39，线序见 接口定义描述文档。<br>
14、1W喇叭以及线束。板子上对应的接口是J2，线序见 接口定义描述文档。<br>
15、网线以及交换机。板子上对应的接口是J11。带水晶头的标准网线。<br>
16、MU420雾化器。板子上对应的接口是J9。线序见 接口定义描述文档。<br> 
17、新技 雾化器水位计 电路板（NT1626A2电路板，需要下载程序并调试完成的板子）以及相关线束。板子上对应的接口是J10。线序见 接口定义描述文档。<br> 
18、氢气检测传感器，板子上对应的接口是J34。线序见 接口定义描述文档。暂时不检测。<br>
19、新技 水箱水位计 电路板（NT1627A2电路板，需要下载程序并调试完成的板子）以及相关线束。板子上对应的接口是J14。线序见 接口定义描述文档。 <br>
20、新技 7寸屏 触摸开机按键（NT1604A2 电路板）以及相关线束。板子上对应的接口是J27。线序线序见 接口定义描述文档。 <br>
21、新技 氢水杯水位计（NT1628A2 电路板，需要下载程序并调试完成的板子）以及相关线束。板子上对应的接口是J40。线序见 接口定义描述文档。 <br>
22、2.54间距跳线帽。板子上对应的接口是J33。用于模拟氢水杯在线与否检测。加上跳线帽，模拟水杯在；取下跳线帽，模拟水杯不在。 <br>
23、新技潓美7寸LED灯板（NT1602A3 电路板，需要下载程序并调试完成的电路板）以及相关线束。板子上对应的接口是J15。线序见 接口定义描述文档。 <br>
24、USB转UART口模块以及线束。板子上对应的接口是J1。线序见 接口定义描述文档。 <br>
25、潓美7寸LCD屏以及电容触摸屏，LCD屏接口为J3，电容触摸屏接口为J4。<br>
26、USB转接线 以及 U盘。板子上对应的接口是J20，线序见 接口定义描述文档。<br>
27、限流可调稳压电源。<br>
28、带软件的SD卡。板子上对应接口的是U2，张斯红提供软件。<br>
29、JLINK、USB线以及SWD转接线。SWD转接线宋宜兵可提供样品。板子上对应的接口是J6。<br>
30、室内温度计，需要是校准过的温度计，温度误差在0.5℃。<br>
31、测试台式电脑<br>
'''备注：第2项到第12项，均为24V开关量，测试时所有接口均可以用24V风扇作为测试设备。'''

===输出口测试===
输出口两种状态，输出高电平和低电平，表现为外接设备是否工作
===输入口测试===
输入口两种状态，输入短路和断路
===RTC测试===
配置时间，检查时间是否正确；重新上电检查是否上次设置时间
===WIFI测试===
配置WIFI，看无线网口是否可正确获取地址<br>
由单独的网络测试工具进行输入输出口的测试,先进行单板级测试，测试完毕后点击烧写版本，切换到EMMC启动<br>
在EMMC启动完成后尝试用测试工具进行一次输出口测试可判断EMMC程序是否正确启动<br>
===水位测试===
水杯/水箱/雾化水位待EMMC程序启动后可在界面观察到，此为实时状态，切换后可实时看到状态
===触屏测试===
EMMC程序启动后应能正确点击设备控制界面<br>
点击无反应或这反应慢均视为不良<br>


===潓美7寸A4版本接口定义描述160603===
{| class="wikitable sortable"
|-
! 位号   !! 功能 !! 描述
|-
|J1||调试口||1PIN:NC<br>2PIN:UART0_TXD<br>3PIN:UART0_RXD<br>4PIN:GND
|-
|J3||LCD屏接口||
|-
|J4||电容触摸屏接口||
|-
|J5||电阻触摸屏接口||
|-
|J6||STM32程序调试口||
|-
|J20||USB口||1PIN:USB1_VBUS<br>2PIN:D-<br>3PIN:D+<br>4PIN:GND
|-
|J8||24V电源供电接口||1PIN:24V-<br>2PIN:24V+
|-
|J21||电源接口||1PIN:GND<br>2PIN:GND<br>3PIN:5Vsb<br>4PIN:5Vsb<br>5PIN:GND<br>6PIN:CH1电压反向<br>7PIN:CH1摇控开关<br>8PIN:CH2摇控开关<br>9PIN:CH1电压检测<br>10PIN:CH1电流检测<br>11PIN:CH1过温保护信号<br>12PIN:CH1电流设定（可选，默认无）<br>13PIN:CH1直流正常信号<br>14PIN:地线检测信号<br>15PIN:继电器开关A信号<br>16PIN:继电器开关B信号<br>17PIN:SCL（可选，默认有）<br>17PIN:SDA（可选，默认有）
|-
|J17||真空泵接口||1PIN:24V(真空泵正极)<br>2PIN:真空泵控制(真空泵负极)
|-
|J16||循环水泵接口||1PIN:24V(水泵正极)<br>2PIN:水泵控制(水泵负极)
|-
|J12||散热器风扇接口||1PIN:24V(风扇正极)<br>2PIN:风扇控制(风扇负极)
|-
|J18||湿化杯电磁阀接口||1PIN:24V(电磁阀正极)<br>2PIN:电磁阀控制(电磁阀负极)
|-
|J19||集水槽电磁阀接口||1PIN:24V(电磁阀正极)<br>2PIN:电磁阀控制(电磁阀负极)
|-
|J13||冷凝器风扇接口||1PIN:24V(风扇正极)<br>2PIN:风扇控制(风扇负极)
|-
|J41||电源风扇接口||1PIN:风扇控制(风扇负极)<br>2PIN:24V (风扇正极)<br>2PIN:风扇反馈信号<br>2PIN:PWM控制风扇转速
|-
|J25||电磁阀3(新增加电磁阀A)||1PIN:24V(电磁阀正极)<br>2PIN:电磁阀控制(电磁阀负极)
|-
|J26||电磁阀4(新增加电磁阀A)||1PIN:24V(电磁阀正极)<br>2PIN:电磁阀控制(电磁阀负极)
|-
|J29||水泵2（新增加水泵A）||1PIN:24V(水泵正极)<br>2PIN:水泵控制(水泵负极)
|-
|J38||臭氧发生器泵||1PIN:24V(电磁阀正极)<br>2PIN:电磁阀控制(电磁阀负极)
|-
|J39||臭氧发生器||1PIN:24V或12V可选，默认12V<br>2PIN:发生器控制(发生器负极)
|-
|J2||扬声器接口||1PIN:SPK+<br>2PIN:SPK-
|-
|J11||100M网络接口||
|-
|J9||MU420雾化器接口||1PIN:雾化器电源正极<br>2PIN:雾化器电源负极<br>3PIN:雾 量 控 制 <br>4PIN:水 位 信 号<br>5PIN:温度信号线<br>6PIN:温度传感器供电3.3V
|-
|J10||雾化器水位计接口||1PIN:3.3V<br>2PIN:水位高检测<br>3PIN:水位低检测<br>4PIN:GND<br>5PIN:温度传感器信号<br>6PIN:温度传感器供电3.3V
|-
|J34||氢气检测接口||1PIN:5V<br>2PIN:AIN<br>3PIN:DIN<br>4PIN:GND
|-
|J14||水箱水位计接口||1PIN:水位计反馈信号<br>2PIN:3.3V<br>3PIN:水位高检测<br>4PIN:水位低检测<br>5PIN:GND<br>6PIN:温度传感器信号<br>6PIN:温度传感器供电3.3V
|-
|J27||开机按键接口||1PIN:3.3V<br>2PIN:按键信号<br>3PIN:GND
|-
|J40||氢水杯水位计接口||1PIN:3.3V<br>2PIN:水位高检测<br>3PIN:水位低检测<br>4PIN:GND
|-
|J33||氢水杯有无检测接口||1PIN:信号线<br>2PIN:GND
|-
|J15||LED板接口||1PIN:备用<br>2PIN:NC<br>3PIN:LED控制信号<br>4PIN:氢水杯水位低检测<br>5PIN:5V<br>6PIN:AIN(氢气模拟信号输入)<br>7PIN:GND<br>8PIN:水杯在否检测<br>9PIN:GND<br>10PIN:NC<br>11PIN:DIN(氢气传感器数字信号输入)<br>12PIN:氢水杯水位高检测
|}
==潓美7寸A4版本硬件调试==
*20160608
**磁珠L7需要一端连接AGND，另一端需要连接PGND
**J41电源风扇需改成24V/12V可选
**板子上控制电源的IIC  PINMUX错
**板子上的DC24转5V电源不可去掉，会引起：1、5V电源供电不够，系统掉电；2、5V电源中的50HZ干扰与LCD屏60HZ扫屏出现差拍水波纹；3、喇叭发声音时，屏幕抖动等现象
*20160627台达潓美7寸A2板辐射测试（从下图中可看到，屏线壳体接地以及主板和地之间良好接触，对辐射有一定改善；屏不接线后，辐射有很明显改善）
**整改前
[[File:Untitled.png|caption]]
**屏线壳体接地，主板与地0R连接
[[File:20160629B.png|caption]]
**整改前  与 屏线壳体接地，主板与地0R连接  对比图片
[[File:20160629C.png|caption]]
**DC source, I/O 24V disable, 5V_0.9A, bottom side copper foil shield去, LED背光关掉，屏不接
[[File:20160629d.png|caption]]
**DC source, I/O 24V disable, 5V_0.9A,底部铜皮去掉, LED背光关，LED COM电压去掉
[[File:20160629e.png|caption]]
*20160628上海浦东医疗设备检测所
**台达台式直流电源
[[File:20160629f.png|caption]]
**台达1175W电源CH2+平板（未整改）
[[File:20160629g.png|caption]]
**台达1175W电源CH1+平板（未整改）
[[File:20160629h.png|caption]]
**台达1175W电源CH1+CH2,新技平板未接
[[File:20160629i.png|caption]]
**台达1175W电源新技整改，屏壳体接地，屏线加磁环
[[File:20160629j.png|caption]]
**台达1175W电源新技整改，屏壳体接地，屏线加磁环 + 关闭屏显示
[[File:20160629k.png|caption]]
**台达台式电源，蓝色为接屏，绿色为没有接屏
[[File:20160629l.png|caption]]
**20160629
潓美7寸板测试发现LCD屏背光clock只有2K，芯片规格TPS61165DBVR 需要工作在10K 到 100K.测试下来，在2K时背光电压纹波很严重；改成50K后背光电压纹波较好。
**20160922
**于2016年9月22日与潓美、台达一起去苏州做EMI 辐射摸底测试
**使用新技7寸平板电脑测试（A5版本电路板，显示屏排线部分加磁环，显示屏总线上加上ESD保护器件，显示屏屏背光调低，电流电阻为1.6欧姆，核心板电源上并一些小电容），供电为电池DC5V供电，放置于1米台桌面边缘，24V以及外设没有供电，效果较好，最高PEAK点到标准低2个DB左右，具体如下图：

**将新技7寸平板用电池DC5V和电源DC24V供电，除去CH1电解槽和台达电源未接上，其他外设均接上，在99M附件超过标准值，具体如下图：

**将新技7寸平板用电池DC5V和电池DC24V供电，除去CH1电解槽和台达电源未接上，除去循环水泵，其他外设均接上，系统处于产气状态，在99M附件超过标准值，具体如下图：
**将新技7寸平板用电池DC5V和电池DC24V供电，除去CH1电解槽和台达电源未接上，除去循环水泵，雾化器关闭，其他外设均接上，系统处于产气状态，在99M附件超过标准值，具体如下图：
**将新技7寸平板用电池DC5V和电池DC24V供电，除去CH1电解槽和台达电源未接上，除去循环水泵，雾化器关闭，关闭真空泵，其他外设均接上，系统处于产气状态，在99M附件超过标准值，具体如下图：
**将新技7寸平板用电池DC5V和电池DC24V供电，除去CH1电解槽和台达电源未接上，除去循环水泵，雾化器关闭，关闭真空泵，去除风扇，其他外设均接上，系统处于产气状态，在99M附件超过标准值，具体如下图：
**将新技7寸平板用电池DC5V和电池DC24V供电，除去CH1电解槽和台达电源未接上，除去循环水泵，雾化器关闭，关闭真空泵，去除风扇，其他外设均接上，系统处于非产气状态，在99M附件超过标准值，具体如下图：
**将新技7寸平板用电池DC5V，DC24V不供电，所有外设均未接，在99M附件超过标准值，具体如下图：
**20160922分析：
*可能是平板电脑单点接地引起。如果平板电脑与机壳单点连接，且机壳没有接地情况时，机壳金属部件有天线效应；在机壳有接地情况时，平板电脑有天线效应。改进方法：平板电脑与机壳金属件采用多点接地，或机壳金属件做一个弯曲结构，直接与平板电脑多点固定在一起。

==触屏测试==
===关闭屏幕输出===
关闭
echo 1 > /sys/class/graphics/fb0/blank
打开
echo 0 > /sys/class/graphics/fb0/blank
===触点测试===
**进入主界面
**长按设置按钮,弹出密码框,输入密码201415,点击确认
**默认序列中选择触屏测试,点击执行
**出现５个点，点击红色显示点，击中红色点会自动到下一个点
**所有点点击完成后会变为白色，点击屏幕任意退出５点测试
**随意点击屏幕，手指处会显示红边框点
**点击右上角退出

===亮度测试===
**进入主界面
**长按设置按钮,弹出密码框,输入密码201415,点击确认
**默认序列中选择亮点测试,点击执行
**默认全黑屏，点击屏幕会按照,黑->白->红->绿->蓝->渐变
**一轮显示完毕后会自动退出
==潓美7寸A4 60片生产硬件故障==
{| class="wikitable sortable"
|-
! 序号  !! 二维编码 !! 故障现象 !! 故障原因 !! 维修结果  !! 后续避免措施
|-
|1|| || 显示屏不开机，核心板黄灯不亮 || 板子上CH2被割断 || 板子正常工作 || 板子轻拿轻放，PCB,以及PCBA包装等做好，加强测试  
|-
|2|| || 显示屏不开机，核心板黄灯不亮 || 板子上感应按键线序错 || 板子正常工作 || 加强测试 
|-
|3|| || 上电后显示电源异常 || 板子上电阻R843未上拉（可能是过孔没有做好） || 板子正常工作 || 加强测试
|-
|4||AS7SVGX6 || 核心板黄灯快速闪烁 || c87短路 || 显示屏工作正常，触摸屏不能工作，'''待查''' || 加强测试，亦加强来料检查
|-
|'''4'''||AS7SVGX6 || 触摸屏不能工作 || 判断是触摸屏故障 || 换屏后触摸正常 || 加强测试，亦加强来料检查
|-
|5||AS7536NG || 核心板黄灯闪烁 || 未找到原因，可能是核心板故障 || 未好 || 加强测试
|-
|6||AS7UMTS9 || 点击升级后，显示屏不显示 || 可能是升级导致系统出错 || 未好，待烧录程序 || 加强软件测试
|-
|7||AS7PQTN2 || 上电后未触摸无效 || STM32未焊接好 || 焊接后即OK || 加强测试
|-
|8||AS7VU10C || J12短路 || 换MOS || OK || 
|-
|9||AS7AZ10C || 在换气时屏黑 || 检测发现在换气时335x超过5S不发送数据 || 将335x开门狗加大到75S，OK || 
|-
|10||AS7F8TWJ || 屏黑 || 检测发现335X PMU 无输出 || 未休 || 
|-
|11||ASUMTS9 || R43处电阻焊接故障 || 焊接OK || 屏正常工作 ||
|-
|12||AS7RC519 || 水杯不在 || PCB过孔不通， || 飞线OK ||
|}

==潓美A5板测试夹具硬件以及软件说明==
#335X上电后需要收到STM32发过去的串口数据，有串口数据STM32开始工作，触摸开关工作；
#

==潓美7测试STM32升级一些说明==
#STM32 执行文件放置地址：/var/dl，执行文件命名：STMDATA.BIN
#telnet localhost 5600，uvstm  发起升级命令

==潓美7开机故障原因==
#台达电源24V建立时间在8us，普通电源在10ms到200ms不等，在24V上接上4颗47uf/50V点解电容，电容上电瞬间相对应短路，电流非常大，导致线上损耗电压压降过大，STM32系统复位。去掉3颗47uf/50V电容后即没有压降，潓美在系统测试中。