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



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

===转接板===
*主要用于将主板上的接口转接到底板。

===底板===
*主要将集成接口单独引出

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

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

==AM3352、STM32通讯协议==
*通讯数据简单说明：在开机后，AM3352在无动作操作情况时，每30秒发送心跳包到STM32，证明AM3352正常待机状态，STM32无需应答；
*在工作状态下，每1秒STM32将采集到的AD数据等数据发送给AM3352，AM3352无需应答；
*在工作状态下，AM3352发送控制命令数据到STM32，STM32需要有应答，未收到应答需要重新发送；
====物理层协议====
*通过串口通讯，9600波特率，校验位无，数据位8位，停止位1位

====应用层协议====
*起始位：0xA5   一个字节
*数据位：
*校验位：数据位异或校验。一个字节
*结束位：0x5A   一个字节。


=====数据位详细描述=====
*数据方向：0x01表示335x发送到STM32，0x02表示STM32发送到335X
*数据内容：
======335X发送到STM32======
*0xXX 一个字节 雾化量控制  0x00 标识雾化量最小，0x64（100）标识雾化量最大
*0xXX 一个字节 LED效果灯控制   0x00 表示效果灯关闭，0x01表示效果灯开启
*0xXX 一个字节 主机开启关闭标识  0x00 表示335X主机正常工作，0x01表示335X 主机将关闭。STM32收到关闭命令后30秒后关闭CH2电源
*0xXX 一个字节 控制新增加水泵标识 0x00 标识关闭新增加的水泵，0x01打开新增加水泵
*0xXX 一个字节 控制新增加水泵标识 0x00 标识关闭新增加的水泵，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 一个字节  用于调节4.3寸屏电源风扇控制PWM，0 到 100，对应PWM 的0% 到 100%，'''4.3寸屏新增'''，在PWM等于0，STM32认为电源风扇关闭，大于0时电源风扇开启，可以检测电源风扇是否正常，以及测试转速等。

======STM32 发送到335X======
*0xXX 0xXX 2个字节 电源CH1路电压
*0xXX 0xXX 2个字节  水位计温度
*0xXX 0xXX 2个字节  CH1电流
*0xXX 0xXX 2个字节  雾化器温度
*0xXX 0xXX 2个字节  电源CH2路电压
*0xXX 0xXX 2个字节  氢气浓度
*0xXX 1个字节  浮球水位检测标识，0x00表示水位正常，0x01表示水位低。'''注意：此位在7机器上表示：湿化杯水位标识，0x00表示水位正常，0x01表示水位低'''
*0xXX 1个字节  接地检测标识，0x00表示接地正常，0x01表示接地错误
*0xXX 1个字节  电源风扇故障标识，0x02 表示 风扇故障，0x01表示风扇OK
*0xXX 0xXX 2个字节  表示风扇转速高位在前，低位在后，只在风扇OK情况下，此位才有效

=====说明=====
*STM32与335X之间通讯1秒通讯一次，无需应答。

==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时电磁阀关闭
|-
|GPIO2_1  ||输入||检测CH1电源输出，0时表示电源输出正常，1是表示电源输出关闭或异常
|-
|GPIO1_19  ||输入||用于控制CH1电源输出换向，输出0时，输出极性默认，输出为1时，输出极性变化
|-
|GPIO1_20  ||输出||用于控制CH1电源输出，输出0时，CH1输出关闭，输出1时，CH1输出打开
|-
|GPIO3_14  ||输入||用于检测电源温度。输入为0时，表示电源温度正常；输入为1时，表示电源温度过高。需要记录温度过高以及温度过高的时间
|-
|GPIO1_27  ||输出||控制功放静音，为高时，使能功放输出，为0时功放静音
|}


* 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，通过表雾化器电阻转化得到温度值

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

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

==潓美4.3寸平板电脑电源控制==
===潓美医疗（低浓度） 192W开关电源 控制说明===
*CH1电压（电解池电压,3.3V）输出控制：AM335X GPIO1_20高电平，CH1输出，GPIO1_20低电平，CH1输出关闭；
*CH1输出电流调节：SPI输出电压控制，在0V ~ 5V的电压输入下，恒流工作点可以在? ~ 40A之间线性变化；
*CH1电流检测：I = V*40/3,V / 25 = v / 15，v / 3.3 = A / 4096,A 为AD 值
*CH1电压检测：：V / 11 = v / 10,V位CH1 电压值，v / 3.3 = A / 4096,A 为AD 值
*CH1输出电压OK检测：GPIO2_1高电平，CH1电压没有输出，GPIO2_1低电平，CH1电压输出建立，在输入AC掉电之后，CH1电压掉出调整率之前，GPIO2_1信号应由低转高。此信号由低转高到CH1电压低于调整率之间的时间间隔不小于5ms
*CH2输出控制：STM32 PB1脚控制，高电平CH2输出，低电平CH2关闭
*电源过温报警检测：温度正常，GPIO3_14为低电平，过温时，GPIO3_14为高电平

===硬件测试===

==硬件调试记录==
*2016-03-12 NT1608A1小板加7812，加改线路。
*2016-03-29 在进入“用户”界面后，触摸屏卡屏无反应，排阻RN103脚一直输出中断信号，在该脚（靠近触摸屏一侧）加上拉电阻以后不再卡。