==项目说明== *上海潓美医疗主要生产氢氧雾化机的企业。潓美平板电脑为氢氧雾化机的操作和控制设备,提供安全、可靠、人性化的用户体验。 ==硬件部分== *主要包括两块电路板。 ===控制主板=== *基于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板;
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主动上传状态(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连接服务器. *获得注册代理部分 设备上电后主动询问注册地址:
GET http://XXXXXXXXX/api/v1/register?device_id=设备序列号.
服务器回应错误或者内容或者非法的url则设备放弃注册. 当device_id参数没有时,返回: {:status => "error", :message => "Required device_id param."} 正确回应为json格式如下: {"status":"success", "register_url": "http://example.com:8001/api/v1/register"} *转私有协议   若正确解析了服务器地址和端口则开启私有协议注册流程. ===版本部分=== 设备上电后,若配置了服务器部分,会主动通过http连接服务器. *向服务器查询版本信息 设备上电后主动服务器查询版本信息:
GET http://XXXXXXXXX/api/v1/versions/latest_firmware?device_id=设备序列号&type=类型.
服务器回应错误或者内容或者非法的url则设备放弃注册. 正确回应为json格式如下:
{
"device": "asclepius_2102"
"version": "1.2.3"
"download_url": "http://example.com/api/v1/versions/downloads/asclepius_clients/asclepius_1.2.3.zip"
"released_at": "2015-01-11 11:11:11"
"update_notes": "本次更新有以下内容,bala bala bala bala bala bala bala bala bala ..."
}
*http下载版本   若正确解析了下载url则通过http的get获取版本. *版本下载完毕后自动重启机器进行升级 *升级完成后自动重启机器运行 ===日志部分=== https://git.g77k.com/snippets/34 ===广播部分=== https://git.g77k.com/snippets/34 设备心跳包 ===私有协议部分=== ====设备控制网络协议==== *简介
本协议描述了通过网络控制机器相关信令及作用.
*说明
协议版本适合所有机型.
*信令格式
点对点信令采用TCP格式,广播只支持设备主动发送发现包,组播上支持客户端主动搜索设备.

信令采用协议头+协议内容,协议内容为json格式.

对于快速控制信令,协议内容均为空。在协议协议参数中填写相关控制参数即可.

本文中若未指定字节序情况下默认均为网络序.

C-客户端,手机客户端,信令代理等.

S-通常设备

消息分为请求,应答,通知;请求和应答为点对点,通知消息所有在线的客户端均会收到。客户端可不等待应答消息,直接解析通知消息即可。
*协议头: {| class="wikitable sortable" |- ! 协议加密类型(4B) !! 消息号(4B) !! 协议参数(4B) !! 消息体长度(4B) |- |20160525,拆分为
2B-0,控制左侧主机:1-控制右侧主机;
2B-固定1,明码方式 ||消息定义见下||快速控制参数||不含本协议头的消息体长度 |} 本文中””代表string,否则为int {| class="wikitable sortable" |- ! 消息号 !! 消息体 !! 说明 |- |emMsg_Search_ID||无||C>S |- |emMsg_Search_Nty ||{
 device_uuid:“设备序列号” 
device_soft_version:“设备软件版本” 
device_hard_version:“设备硬件版本” 
device_alias:“设备别名” 
device_mac:“设备MAC” 
device_ipaddr:“设备IP” 
port:设备端口 
}  ||S>C |- |emMsg_Register_Dev||消息体同emMsg_Search_Nty||C>S |- |emMsg_Register_Dev_Ack||
{
result:“OK”(其它失败)
device_uuid:“设备序列号”
其它不解析
}
||C>S |- |emMsg_UnRegister_Dev||消息体同emMsg_Search_Nty||S>C |- |emMsg_UnRegister_Dev_Ack||
{
result:“OK”(其它失败)
device_uuid:“设备序列号”
其它不解析
}
||C>S |- |emMsg_Login_Dev||
{
device_uuid:“设备序列号”
username:“用户名”
userpass:“用户密码”
method:“密码加密方式 ex:BASE64,MD5”
}
||C>S |- |emMsg_Login_Dev_Ack||
{
result:“OK”(其它失败)
device_uuid:“设备序列号”
其它先保留
}
||S>C |- |emMsg_Get_DevData||无||C>S |- |emMsg_Get_DevData_Ack||
{
device_uuid:”序列号”
device_soft_version:”软件版本”
device_hard_version:”硬件版本”
device_netpass:”网络访问密码”
device_alias:”别名”
device_mac:”MAC”
dev_work_duration:总工作时间
dev_check_duration:上次检查经历时间
dev_startup_time:初次开机时间
dev_work_mode:机器类型
time_zone:时区
language:语言
accpet:授权时间
r1:保留
}
||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||{
ntpenabled:使能
ntp_svr_ip:”ntp服务URL”
ntp_svr_port:ntp服务端口
net_ver_enabled:升级使能
net_ver_ip:”版本服务URL”
net_ver_port: 版本服务端口
net_rcv_enabled:使能平台推送服务
net_rcv_url:”服务发布URL”
net_rcv_port:服务发布端口
net_rcv_type:服务发布类型
net_snd_enabled:使能主动上报服务
net_snd_url:”上报接收URL”
net_snd_port:上报服务端口
net_snd_type:上报服务类型
}
||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||更改工作时间,快速控制参数填时间必须时30分钟倍数且大于30小于240||C>S机器开始工作后禁止更改 |- |emMsg_Select_User_Time_Ntf||更改工作时间,快速控制参数填时间必须时30分钟倍数且大于30小于240||S>C 通知所有 |- |emMsg_Select_User_Time_Ack||

result:“Already RUN

device_uuid:“设备序列号”
其它先保留
}
||S>C |- |emMsg_Start_User_Work||开始工作,无消息体||C>S |- |emMsg_Start_User_Work_Ack||{
result:“Already RUN”
device_uuid:“设备序列号”
其它先保留
}
||S>C |- |emMsg_Start_User_Work_Ntf||开始工作通知||S>C 通知所有 |- |emMsg_Stop_User_Work||停止工作,无消息体||C>S |- |emMsg_Stop_User_Work_Ack||{
result:“Not RUN”
device_uuid:“设备序列号”
其它先保留
}
||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||更改产气量,快速控制参数填写值,随时可调(0小-1中-2大)||C>S |- |emMsg_Change_User_HyDrogen_Ntf||更改产气量,快速控制参数为产气量,(0小-1中-2大)||S>C 通知所有 |- |emMsg_PowerOff||关机||C>S |- |emMsg_PowerOff_Ack||关机回应

result:“OK”
device_uuid:“设备序列号”
其它先保留
}
||S>C |- |emMsg_Page_Notify||用于同步告知客户端机器本地操作跳转到哪一页,若您是与机器一致客户端则需跳转到相同页||S>C 通知所有 |- |emMsg_SetAlias_Cmd||设置设备别名
{
alias:”别名”
}
|- |emMsg_Ping_Dev||心跳(5秒3次无回应则认为对方掉线)||S>C,C>S |- |emMsg_Ping_Dev_Ack||心跳回应||S>C,C>S |- |emMsg_Get_UserData||获取用户列表

refid:从0开始的id号
totalNum:一次传输个数
}
||C>S |- |emMsg_Get_UserData_Ack||获取用户列表

user {
userid:从0开始的id号
username:"名字"
userpass:"密码目前未用"
user_tel:"电话"
birthdate:"电话"
med_record:"病历代码"
user_gender:性别(0-女,1-男)
user_hydrogenvalue:"电话"
user_inbreathevalue:"电话"
user_custom_picpath:"电话"
}}
||C>S |} ==版本切换== 若建立文件/var/lib/medctrl/A2,则程序为A2版本,否则为A3以后版本
若建立文件/var/lib/medctrl/oldp,则程序为老电源控制,否则为新电源
这些切换后重启生效 ==机器类型切换== 若在/etc/machinetype写入下列类型 {| class="wikitable sortable" |- ! 写入内容 !! 机器类型 !! 说明 |- |7H||7寸横屏|| |- |4H||4.3寸竖屏|| |- |5H||5寸横屏|| |- |5V||5寸竖屏|| |- |12H||12寸横屏|| |} 主机在获取STM版本后写入/tmp/hardware文件 ==单板测试== ===测试准备=== 台式电脑一台,RJ45网线,路由器一台
将电脑和单板联通
单板使用测试SD卡启动
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。
*a.需要台达电源MEB-1K2ATAT ZZB 只; *b.需要J21 线束 根,线长度 cm; *c.需要J8处线束 根,线长度 cm; 2、24V散热器风扇。板子上对应的接口是J12。线序见 接口定义描述文档。
3、24V真空泵。板子上对应的接口是J17.线序见 接口定义描述文档。
4、24V循环水泵。板板子上对应的接口是J16线序见 接口定义描述文档。
5、24V湿化杯电磁阀。板子上对应的接口是J18.线序见 接口定义描述文档。
6、24V集水槽电磁阀。板子上对应的接口是J19。线序见 接口定义描述文档。
7、24V冷凝器风扇。板子上对应的接口是J13。线序见 接口定义描述文档。
8、24V可调风速风扇。板子上对应的接口是J41。线序见 接口定义描述文档。
9、24V电磁阀。板子上对应的接口是J25,线序见 接口定义描述文档。
10、24V电磁阀。板子上对应的接口是J26,线序见 接口定义描述文档。
11、24V水泵。板子上对应的接口是J29,线序见 接口定义描述文档。
12、24V臭氧发生器泵。板子上对应的接口是J38,线序见 接口定义描述文档。
13、12V 臭氧发生器。板子上对应的接口是J39,线序见 接口定义描述文档。
14、1W喇叭以及线束。板子上对应的接口是J2,线序见 接口定义描述文档。
15、网线以及交换机。板子上对应的接口是J11。带水晶头的标准网线。
16、MU420雾化器。板子上对应的接口是J9。线序见 接口定义描述文档。
17、新技 雾化器水位计 电路板(NT1626A2电路板,需要下载程序并调试完成的板子)以及相关线束。板子上对应的接口是J10。线序见 接口定义描述文档。
18、氢气检测传感器,板子上对应的接口是J34。线序见 接口定义描述文档。暂时不检测。
19、新技 水箱水位计 电路板(NT1627A2电路板,需要下载程序并调试完成的板子)以及相关线束。板子上对应的接口是J14。线序见 接口定义描述文档。
20、新技 7寸屏 触摸开机按键(NT1604A2 电路板)以及相关线束。板子上对应的接口是J27。线序线序见 接口定义描述文档。
21、新技 氢水杯水位计(NT1628A2 电路板,需要下载程序并调试完成的板子)以及相关线束。板子上对应的接口是J40。线序见 接口定义描述文档。
22、2.54间距跳线帽。板子上对应的接口是J33。用于模拟氢水杯在线与否检测。加上跳线帽,模拟水杯在;取下跳线帽,模拟水杯不在。
23、新技潓美7寸LED灯板(NT1602A3 电路板,需要下载程序并调试完成的电路板)以及相关线束。板子上对应的接口是J15。线序见 接口定义描述文档。
24、USB转UART口模块以及线束。板子上对应的接口是J1。线序见 接口定义描述文档。
25、潓美7寸LCD屏以及电容触摸屏,LCD屏接口为J3,电容触摸屏接口为J4。
26、USB转接线 以及 U盘。板子上对应的接口是J20,线序见 接口定义描述文档。
27、限流可调稳压电源。
28、带软件的SD卡。板子上对应接口的是U2,张斯红提供软件。
29、JLINK、USB线以及SWD转接线。SWD转接线宋宜兵可提供样品。板子上对应的接口是J6。
30、室内温度计,需要是校准过的温度计,温度误差在0.5℃。
31、测试台式电脑
'''备注:第2项到第12项,均为24V开关量,测试时所有接口均可以用24V风扇作为测试设备。''' ===输出口测试=== 输出口两种状态,输出高电平和低电平,表现为外接设备是否工作 ===输入口测试=== 输入口两种状态,输入短路和断路 ===RTC测试=== 配置时间,检查时间是否正确;重新上电检查是否上次设置时间 ===WIFI测试=== 配置WIFI,看无线网口是否可正确获取地址
由单独的网络测试工具进行输入输出口的测试,先进行单板级测试,测试完毕后点击烧写版本,切换到EMMC启动
在EMMC启动完成后尝试用测试工具进行一次输出口测试可判断EMMC程序是否正确启动
===水位测试=== 水杯/水箱/雾化水位待EMMC程序启动后可在界面观察到,此为实时状态,切换后可实时看到状态 ===触屏测试=== EMMC程序启动后应能正确点击设备控制界面
点击无反应或这反应慢均视为不良
===潓美7寸A4版本接口定义描述160603=== {| class="wikitable sortable" |- ! 位号 !! 功能 !! 描述 |- |J1||调试口||1PIN:NC
2PIN:UART0_TXD
3PIN:UART0_RXD
4PIN:GND |- |J3||LCD屏接口|| |- |J4||电容触摸屏接口|| |- |J5||电阻触摸屏接口|| |- |J6||STM32程序调试口|| |- |J20||USB口||1PIN:USB1_VBUS
2PIN:D-
3PIN:D+
4PIN:GND |- |J8||24V电源供电接口||1PIN:24V-
2PIN:24V+ |- |J21||电源接口||1PIN:GND
2PIN:GND
3PIN:5Vsb
4PIN:5Vsb
5PIN:GND
6PIN:CH1电压反向
7PIN:CH1摇控开关
8PIN:CH2摇控开关
9PIN:CH1电压检测
10PIN:CH1电流检测
11PIN:CH1过温保护信号
12PIN:CH1电流设定(可选,默认无)
13PIN:CH1直流正常信号
14PIN:地线检测信号
15PIN:继电器开关A信号
16PIN:继电器开关B信号
17PIN:SCL(可选,默认有)
17PIN:SDA(可选,默认有) |- |J17||真空泵接口||1PIN:24V(真空泵正极)
2PIN:真空泵控制(真空泵负极) |- |J16||循环水泵接口||1PIN:24V(水泵正极)
2PIN:水泵控制(水泵负极) |- |J12||散热器风扇接口||1PIN:24V(风扇正极)
2PIN:风扇控制(风扇负极) |- |J18||湿化杯电磁阀接口||1PIN:24V(电磁阀正极)
2PIN:电磁阀控制(电磁阀负极) |- |J19||集水槽电磁阀接口||1PIN:24V(电磁阀正极)
2PIN:电磁阀控制(电磁阀负极) |- |J13||冷凝器风扇接口||1PIN:24V(风扇正极)
2PIN:风扇控制(风扇负极) |- |J41||电源风扇接口||1PIN:风扇控制(风扇负极)
2PIN:24V (风扇正极)
2PIN:风扇反馈信号
2PIN:PWM控制风扇转速 |- |J25||电磁阀3(新增加电磁阀A)||1PIN:24V(电磁阀正极)
2PIN:电磁阀控制(电磁阀负极) |- |J26||电磁阀4(新增加电磁阀A)||1PIN:24V(电磁阀正极)
2PIN:电磁阀控制(电磁阀负极) |- |J29||水泵2(新增加水泵A)||1PIN:24V(水泵正极)
2PIN:水泵控制(水泵负极) |- |J38||臭氧发生器泵||1PIN:24V(电磁阀正极)
2PIN:电磁阀控制(电磁阀负极) |- |J39||臭氧发生器||1PIN:24V或12V可选,默认12V
2PIN:发生器控制(发生器负极) |- |J2||扬声器接口||1PIN:SPK+
2PIN:SPK- |- |J11||100M网络接口|| |- |J9||MU420雾化器接口||1PIN:雾化器电源正极
2PIN:雾化器电源负极
3PIN:雾 量 控 制
4PIN:水 位 信 号
5PIN:温度信号线
6PIN:温度传感器供电3.3V |- |J10||雾化器水位计接口||1PIN:3.3V
2PIN:水位高检测
3PIN:水位低检测
4PIN:GND
5PIN:温度传感器信号
6PIN:温度传感器供电3.3V |- |J34||氢气检测接口||1PIN:5V
2PIN:AIN
3PIN:DIN
4PIN:GND |- |J14||水箱水位计接口||1PIN:水位计反馈信号
2PIN:3.3V
3PIN:水位高检测
4PIN:水位低检测
5PIN:GND
6PIN:温度传感器信号
6PIN:温度传感器供电3.3V |- |J27||开机按键接口||1PIN:3.3V
2PIN:按键信号
3PIN:GND |- |J40||氢水杯水位计接口||1PIN:3.3V
2PIN:水位高检测
3PIN:水位低检测
4PIN:GND |- |J33||氢水杯有无检测接口||1PIN:信号线
2PIN:GND |- |J15||LED板接口||1PIN:备用
2PIN:NC
3PIN:LED控制信号
4PIN:氢水杯水位低检测
5PIN:5V
6PIN:AIN(氢气模拟信号输入)
7PIN:GND
8PIN:水杯在否检测
9PIN:GND
10PIN:NC
11PIN:DIN(氢气传感器数字信号输入)
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,点击确认 **默认序列中选择触屏测试,点击执行 **出现5个点,点击红色显示点,击中红色点会自动到下一个点 **所有点点击完成后会变为白色,点击屏幕任意退出5点测试 **随意点击屏幕,手指处会显示红边框点 **点击右上角退出 ===亮度测试=== **进入主界面 **长按设置按钮,弹出密码框,输入密码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电容后即没有压降,潓美在系统测试中。