| case 1:
		
			            {
		
			                for(i = 0; i < 20000; i++);
		
			                DAC_Value = 0x2e8;
		
			                DAC_WriteData(DAC0, DAC_Value, 0);
		
			                adc_change_input_ch(4);
		
			                ADC0_get_send_result();
		
			                adc_change_input_ch(6);
		
			                ADC0_get_send_result();
		
			                adc_change_input_ch(5);
		
			                sample =  ADC0_get_result();
		
			                if(sample > 0x600 )
		
			                {
		
			                    for(i = 0; i < 200; i++);
		
			                    adc_change_input_ch(5);
		
			                    sample =  ADC0_get_result();
		
			                    if(sample > 0x600 )
		
			                    {
		
			                        working_satae = 2;
		
			                    }
		
			                }
		
			                break;
		
			            }
		
			            case 2:
		
			            {
		
			                DAC_Enable(DAC0, 0, 1);
		
			                for(i = 0; i < 20000; i++);
		
			                DAC_Value = 0x2e8;
		
			                DAC_WriteData(DAC0, DAC_Value, 0);
		
			                adc_change_input_ch(4);
		
			                ADC0_get_send_result();
		
			                adc_change_input_ch(6);
		
			                ADC0_get_send_result();
		
			                adc_change_input_ch(5);
		
			                sample =  ADC0_get_result();
		
			 
		
			                if(sample < 0xd0 )
		
			                {
		
			                    for(i = 0; i < 20000; i++);
		
			                    adc_change_input_ch(5);
		
			                    sample =  ADC0_get_result();
		
			                    if(sample < 0xd0 )
		
			                    {
		
			                        GPIO_PinOutSet(gpioPortA, 8);
		
			                        GPIO_PinModeSet(gpioPortE, 13, gpioModePushPullDrive, 1);
		
			                        GPIO_PinOutSet(gpioPortE, 13);
		
			                        DAC_Value = 0xfff;
		
			                        DAC_WriteData(DAC0, DAC_Value, 0);
		
			                        GPIO_PinOutClear(gpioPortA, 9);
		
			                        working_satae = 3;
		
			                    }
		
			                    else
		
			                    {
		
			                        GPIO_PinOutClear(gpioPortA, 8);
		
			                        GPIO_PinOutSet(gpioPortA, 9);
		
			                        GPIO_PinOutClear(gpioPortE, 13);
		
			                        GPIO_PinModeSet(gpioPortE, 13, gpioModeInput, 0);
		
			                    }
		
			 
		
			                }
		
			 
		
			                break;
		
			            }//case 1
		
			            case 3:
		
			            {
		
			                DAC_Enable(DAC0, 0, 1);
		
			                for(i = 0; i < 20000; i++);
		
			                adc_change_input_ch(4);
		
			                ADC0_get_send_result();
		
			                adc_change_input_ch(6);
		
			                ADC0_get_send_result();
		
			                adc_change_input_ch(5);
		
			                sample = ADC0_get_result();
		
			                if(sample > 0x7a0)
		
			                {
		
			                    for(i = 0; i < 20000; i++);
		
			                    //adc_change_input_ch(5);
		
			                    sample =  ADC0_get_result();
		
			                    if(sample > 0x780)
		
			                    {
		
			                    working_satae = 1;
		
			                    GPIO_PinOutClear(gpioPortA, 8);
		
			                    GPIO_PinOutSet(gpioPortA, 9);
		
			                    GPIO_PinOutClear(gpioPortE, 13);
		
			                    GPIO_PinModeSet(gpioPortE, 13, gpioModeInput, 0);
		
			                    }
		
			                }
		
			                break;
		
			            }//case 2
		
			        }
		
			    }
		
			} 代码上传到githbub了,怕你们看不到,特意把这行大号字体标红https://github.com/posystorage/USB-voltmeter
 
 最后的口头禅,壁虎手册这么好看,你们还不来玩
 
   
 最后的最后,说下这个usb小表后期的改进计划
 0、如果有一定数量的坛友对这个项目感兴趣或者也想玩一发的,我会画pcb并把这货做成个产品级别的东西,如果没有,那项目就到这了,我也玩够了,壁虎还有其他好玩的呢。
 如果项目继续,几方面计划
 1、增加显示装置,估计会设计成数码管与oled兼容款pcb,低端数码管,高大上oled
 2、现在快速充电协议那么多,除了qc2.0还有qc3.0、mtk-pe、海思快充、蓝绿大厂的快充等等等等。多支持几个是比较好玩的,也是大家喜闻乐见的。但是这有前提,首先要有资料,协议资料这还是比较麻烦的,很难找。还有就是要有对应的实验样品,快充充电头都比较贵,一个40-50的样子有些估计还不止,我一穷学生,还是搞不起这么多快充头。所以如果团购的话,就算PCB可能很便宜,就几毛一片,平摊这些费用后,估计要3-5元的一小片样子,先说明。
 3、取样电阻由100毫欧改成10毫欧,然后配一枚运放。
 4、原始数据要处理,平滑,校准偏差什么的
 5、整个充电过程数据记录到单片机内部。这货有128k的程序空间,现在就用了7k的大小,最终完成可以最多用四分之一,后面剩余的大量空间可以记录充电过程数据,当然也会有专门的上传机制什么的,传到电脑可分析,这个再说。
 
 就这些,欢迎砸m币
 
 
 
 @zty615 坛友的作品:不用程序 只用通用零件装出QC2.0诱骗器,公布网络上你搜不出来的技术细节(完美完结):http://bbs.mydigit.cn/read.php?tid=1734268
 (责任编辑:admin)
 |