你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

USB Type C 如何测试?

[复制链接]
gaosmile 发布时间:2021-1-11 11:27
背景
& m6 H' Y7 Y" x7 x
微信图片_20210111112354.png

; D6 b* ?" w+ A  X, B0 |
搞了这么个玩意儿,因为Typec的24个引脚焊盘都引出来了,为保证质量,要进行测量,从而保证其该通的通,该断的断。时间紧,没办法,看手上有F4的开发板,索性就用它来DIY了
" v8 J4 s& Z' i0 E
需求

  t- u. e, h4 J, k& r! D/ m% T
微信图片_20210111112447.png
+ 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口上。

' Y6 z/ P% [+ H0 i+ W2 {) s
短路测试:将1个pin设为输出高电平,其余pin设为输入并依次读取,如果为高即为短路。因AB面短路的可能性极低,也懒的搞,所以A面只测A面,B面只测B面

; z# c; Y9 r. z+ f' K5 ^# E
通路测试:根据电路图,只测所有相连引脚,同样将1个pin设为输出高电平,其余设为输入并依次读取,如果为高即为通路

. w3 w# j1 H; [3 v4 H; L6 ]1 m
硬件制作
3 Q$ P3 N6 s' I- ^# p
某宝上买了24引脚加外壳都引出来的测试板,然后焊线接到开发板的IO口上。直接上图
! C. Y$ }' d9 `3 c5 p! O% ~
微信图片_20210111112450.jpg
7 B3 v. r# h* V& e6 e
看着很乱是吧,本来线就多,还用错线了,也懒的再重新焊了,就加了下转接。

% h" t  R+ B& X1 n6 X* B2 W( l
软件编程

5 n( K1 @- K8 v& m) x4 L
着急用, 怎么简单就怎么来了,代码直接堆,IO口接一个填一个。
( k; z, ]% ~- M  l& X3 R$ s
所用IO定义

6 S7 c7 X$ j  D: T1 H5 [

  • / R+ _) f( k" L5 {7 _
/*************************************母头A面所用IO****************************************/uint16_t        gblpFemaleAPin[13] = {GPIO_Pin_14, GPIO_Pin_15, GPIO_Pin_11, GPIO_Pin_12, GPIO_Pin_13, GPIO_Pin_2,                                                                                                GPIO_Pin_3, GPIO_Pin_4, GPIO_Pin_5, GPIO_Pin_6, GPIO_Pin_1, GPIO_Pin_8,  GPIO_Pin_6 };GPIO_TypeDef *        gblpFemaleAPort[13] = {GPIOB, GPIOB, GPIOD, GPIOD, GPIOD, GPIOG,GPIOG,                                                                                                                                 GPIOG, GPIOG, GPIOG, GPIOD, GPIOG, GPIOC};/*************************************母头B面所用IO****************************************/        uint16_t        gblpFemaleBPin[12] = {GPIO_Pin_6, GPIO_Pin_5, GPIO_Pin_4, GPIO_Pin_15, GPIO_Pin_14, GPIO_Pin_7,                                                                                                  GPIO_Pin_15, GPIO_Pin_5, GPIO_Pin_11, GPIO_Pin_12, GPIO_Pin_13,  GPIO_Pin_14 };GPIO_TypeDef *        gblpFemaleBPort[12] = {GPIOD, GPIOD, GPIOD, GPIOD, GPIOD, GPIOD,GPIOG,                                                                                                                                 GPIOB, GPIOG, GPIOG, GPIOG, GPIOG};
2 q+ K& j$ q3 E+ j& [
/*************************************公头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
  • / H. h( h& j! b, t( [
for(i=0; i<12; i++)        {                GPIO_InitStructure.GPIO_Pin = gblpFemaleAPin;                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;                GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;                 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;                GPIO_Init(gblpFemaleAPort, &GPIO_InitStructure);                        GPIO_WriteBit(gblpFemaleAPort, gblpFemaleAPin, Bit_SET);for(l=i+1; l<13; l++)                {if(GPIO_ReadInputDataBit(gblpFemaleAPort[l], gblpFemaleAPin[l]))                        {printf("FA%d = FA%d    ", 12-i,12-l);if(i==0 && l==11)                                        aFlag |= 0x8000;else if(i==3 && l==8)                                        aFlag |= 0x4000;else                                        aFlag |= 0x2000;
( g4 o* m9 }# N5 \, Z
                                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
  • ! r  O; w! C% Q) N) s
GPIO_InitStructure.GPIO_Pin = gblpFAConnectPin[2];        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;        GPIO_Init(gblpFAConnectPort[2], &GPIO_InitStructure);                GPIO_WriteBit(gblpFAConnectPort[2], gblpFAConnectPin[2], Bit_SET);if(GPIO_ReadInputDataBit(gblpMaleAPort[3], gblpMaleAPin[3])  &&                 GPIO_ReadInputDataBit(gblpMaleAPort[8], gblpMaleAPin[8]) &&                 GPIO_ReadInputDataBit(gblpMaleBPort[3], gblpMaleBPin[3]) &&                GPIO_ReadInputDataBit(gblpMaleBPort[8], gblpMaleBPin[8]))        {printf("FA4 = MA4 = MA9 = MB4 = MB9    ");                aFlag |= 0x0004;        }        GPIO_InitStructure.GPIO_Pin = gblpFAConnectPin[2];        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;         GPIO_Init(gblpFAConnectPort[2], &GPIO_InitStructure);                GPIO_WriteBit(gblpFAConnectPort[2], gblpFAConnectPin[2], Bit_RESET);
: j, s$ D9 J2 \( {# B
运行结果5 U  @7 |2 |$ m8 _% f/ J
4 Y0 j* Q9 ~0 j* K7 Z
微信图片_20210111112454.png

: E. K" k! d0 E% X* N# x* C4 t
赞 收藏 评论0 发布时间:2021-1-11 11:27

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版