|
背景 & m6 H' Y7 Y" x7 x
搞了这么个玩意儿,因为Typec的24个引脚焊盘都引出来了,为保证质量,要进行测量,从而保证其该通的通,该断的断。时间紧,没办法,看手上有F4的开发板,索性就用它来DIY了 " v8 J4 s& Z' i0 E 需求
+ o; A# g, @& a0 l2 d- g$ p8 Q& x 如图所示,因24个引脚中,只用了 VCC, GND, DP, DN, CC1, CC2 7个信号,外加一个外壳,所以通路只需确认这7路即可。短路就简单了,不该短的别短的就OK了。 0 `+ K, p! a. q9 [3 q/ k& G, r 原理 3 K5 l$ S" ]$ x4 A! y 首先将公头和母座的24个脚加外壳,一共25个引脚分别引出来接到IO口上。 短路测试:将1个pin设为输出高电平,其余pin设为输入并依次读取,如果为高即为短路。因AB面短路的可能性极低,也懒的搞,所以A面只测A面,B面只测B面 通路测试:根据电路图,只测所有相连引脚,同样将1个pin设为输出高电平,其余设为输入并依次读取,如果为高即为通路 硬件制作 3 Q$ P3 N6 s' I- ^# p 某宝上买了24引脚加外壳都引出来的测试板,然后焊线接到开发板的IO口上。直接上图 ! C. Y$ }' d9 `3 c5 p! O% ~
7 B3 v. r# h* V& e6 e 看着很乱是吧,本来线就多,还用错线了,也懒的再重新焊了,就加了下转接。 软件编程 着急用, 怎么简单就怎么来了,代码直接堆,IO口接一个填一个。 ( k; z, ]% ~- M l& X3 R$ s 所用IO定义 /*************************************公头A面所用IO****************************************/ uint16_t gblpMaleAPin[13] = {GPIO_Pin_12, GPIO_Pin_13, GPIO_Pin_8, GPIO_Pin_0, GPIO_Pin_15, GPIO_Pin_10, GPIO_Pin_13, GPIO_Pin_12, GPIO_Pin_11, GPIO_Pin_1, GPIO_Pin_0, GPIO_Pin_0, GPIO_Pin_1 };GPIO_TypeDef * gblpMaleAPort[13] = {GPIOB, GPIOB, GPIOD, GPIOG, GPIOF, GPIOD,GPIOF, GPIOF, GPIOF, GPIOB, GPIOB, GPIOF, GPIOF};/*************************************公头B面所用IO****************************************/ uint16_t gblpMaleBPin[12] = {GPIO_Pin_6, GPIO_Pin_5, GPIO_Pin_4, GPIO_Pin_13, GPIO_Pin_3, GPIO_Pin_2, GPIO_Pin_1, GPIO_Pin_0, GPIO_Pin_5, GPIO_Pin_4, GPIO_Pin_6, GPIO_Pin_2 };GPIO_TypeDef * gblpMaleBPort[12] = {GPIOA, GPIOA, GPIOA, GPIOC, GPIOC, GPIOC,GPIOC, GPIOC, GPIOF, GPIOF, GPIOE, GPIOF}; 3 w% d1 n, \) ? /************************************通路测试所用IO****************************************/ uint16_t gblpFAConnectPin[4] = {GPIO_Pin_6, GPIO_Pin_8, GPIO_Pin_5, GPIO_Pin_4};GPIO_TypeDef * gblpFAConnectPort[4] = {GPIOC, GPIOG, GPIOG, GPIOG};uint16_t gblpFBConnectPin[3] = {GPIO_Pin_5, GPIO_Pin_15, GPIO_Pin_7};GPIO_TypeDef * gblpFBConnectPort[3] = {GPIOB, GPIOG, GPIOD}; ) D7 x4 k( w! b' l6 { R3 F 短路测试部分代码 ' ^& h3 Q6 a5 v, c l9 e
aFlag++; } Delay_ms(2); } GPIO_InitStructure.GPIO_Pin = gblpFemaleAPin; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_Init(gblpFemaleAPort, &GPIO_InitStructure); GPIO_WriteBit(gblpFemaleAPort, gblpFemaleAPin, Bit_RESET); } if((aFlag&0xE000) == 0xC000) {printf("PASS\r\n"); flag |= 0x01; } else {printf("Failed\r\n"); } & X+ c3 G7 p# S) b& J3 | 通过测试部分代码 5 E- P; F3 C; }5 d- q- R( V# u
: j, s$ D9 J2 \( {# B 运行结果5 U @7 |2 |$ m8 _% f/ J 4 Y0 j* Q9 ~0 j* K7 Z
|
微信公众号
手机版