==项目说明== *上海潓美医疗主要生产氢氧雾化机的企业。潓美平板电脑为氢氧雾化机的操作和控制设备,提供安全、可靠、人性化的用户体验。 ==硬件部分== *主要包括两块电路板。 ===控制主板=== *基于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位 ====应用层协议==== *起始位: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 一个字节 控制新增电磁阀A标识 0x00 标识关闭新增电磁阀A,0x01打开新增电磁阀A *0xXX 一个字节 控制新增电磁阀B标识 0x00 标识关闭新增电磁阀B,0x01打开新增电磁阀B *0xXX 一个字节 控制继电器开关A标识 0x00 标识关闭继电器开关A,0x01打开继电器开关A *0xXX 一个字节 控制继电器开关B标识 0x00 标识关闭继电器开关B,0x01打开继电器开关B ======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表示水位低 *0xXX 1个字节 接地检测标识,0x00表示接地正常,0x01表示接地错误 ======335X发送到STM32关于代码升级数据====== *1、335X发送获取STM32软件版本命令:version,8个字节。STM32没有应答或应答错误,需要每个3秒发送一次,重发3次。STM32 应答返回软件版本号:HM70.001.01(如果是4.3寸屏则是HM43.001.01),11个字节 *2、335x收到STM32应答后,软件版本与最新版本不一致,发送升级命令:UPDATA,6个字节。未收到应答,发送3次。STM32收到升级命令应答:OKUPDATA,8个字节。并重启系统,准备升级代码。 *3、STM32重启后,发送命令给335x,提出升级命令:UPDATA,没收到335X应答,重发。持续1分钟。超过一分钟,跳过升级,系统正常启动。335X 应答反馈代码字节数并在字节数后面加上OK,例如:21739OK,7字节。(每隔5S发送一次,重复3次)STM32收到335X反馈后,应答:335X相同数据:21739OK。335X收到后进入正式升级。 *4、335X发代码数据:DATA + 0x01 + 512字节代码。DATA 代码是数据命令,0x01代表第一包数据,512字节数据为一个包字节数据。一共517字节数据。如果数据不够512字节,在数据后面补充0xff。STM32 应答:DATA + 0x01 + OK *5、335X发送完毕后:Completeupgrade,15个字节,STM32应答Completeupgrade。完成升级。 =====说明===== *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时电磁阀关闭 |- |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 ||输出||控制功放静音,为高时,使能功放输出,为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,通过表雾化器电阻转化得到温度值 *中汉电源检测: **中汉电源电流检测:I = (V-0.64)X100/3.5 ,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 值 *台达电源检测 **台达电源电流检测: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电压值 ==AM3352 通过UART1串口 与 STM32 通讯== ==AM3352 通过 SPI 口调节输出电压控制电解量== *在0V ~ 5V的电压输入下,恒流工作点可以在28A ~ 40.8A之间线性变化。SPI接口输出0,电压输出5V,SPI输出255,电压输出0V,之间线性变化。 ==潓美7寸平板电脑电源控制== 在软件中,需要兼容新老电源,分别用于控制老电源和新电源 ===汉中电源(老电源)控制说明=== 老电源主要需要如下检测和控制 *CH1电压(电解池电压)输出控制:AM335X GPIO1_20高电平,CH1输出,GPIO1_20低电平,CH1输出关闭; *CH1电压反向控制:GPIO1_19低电平,CH1电压正向输出,AM335X GPIO1_19高电平,CH1电压反向输出; *CH1输出电压调节:SPI输出电压控制,2V对应输出电压24*40%,5V对应输出电压24*100%;SPI 输出0 对应5V,SPI输出255,对应0V; *CH1电流检测:I = (V-0.64)X100/3.5 ,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检测:GPIO2_1 为高时,CH1输出正常,GPIO2_1 为低时,CH1输出关闭 ===宏达电源(新电源)控制说明=== 宏达新电源主要需要如下检测和控制 *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%占空比时较明显。 ==硬件调试记录== *2016-03-14 潓美上海调试记录:触摸屏太亮,供电芯片温度过高,将供电芯片反馈端电阻从1欧姆改为3.3欧姆,并将占空比调至3,芯片温度正常。 *2016-03-15 潓美日本参展问题记录: ==手机APP远程操作设备== 首先对手机和设备所在的网络环境作一个分类: 1. 当手机和设备都在位于一个局域网中,如手机用户和设备都放在家里,手机通过家里的WIFI联网,此时手机可以直接与设备进行网络通信。如图1所示。 [[Image:Device_and_mobile_in_lan.png]] 2. 当手机和设备不位于同一个直接的网络中,如手机是通过手机本身的3G/4G网络联网,而设备是通过家里的WIFI联网的,并且要保证WIFI是可以连接到外网的,那么此时手机是可以通过云服务器与家里的设备进行远程的网络通信的。如图2所示。 [[Image:Device_in_lan_and_mobile_3g.png]] ===手机登录设备=== 1. 在第一种网络环境里,手机APP可以自动发现同一局域网中的设备(通过自定的UDP广播协议),手机用户从设备列表中选择一台设备,输入用户名和密码登录,设备端进行验证,然后建立TCP连接。 2. 在第二种网络环境里,手机APP与设备不在同一个网络中,不能直接建立通信。手机APP直接输入用户名和密码,云服务器进行验证,关联登录用户所在的设备,手机与设备通过云服务器作为中间代理进行通信。 ==软件测试== [[潓美软件测试Test Cases]] ==故障报修== AS7UMGQS:现象:黑屏(另偶尔花屏,切换到其他界面正常,返回依然花屏),原因:电感L2放错,转了90度。 AS7C597X:现象:屏幕从底部斜视发黄发绿。 AS7R20AD:现象:无法开机,串口无任何打印输出。 AS7M1YVF:现象:J16无输出,原因:MOS管Q42炸管。 AS7WF3K4:现象:不能开机,原因:按键板接触不良。