最近PCBA生产在现货商手里采购了一批物料,PCBA过后,以前正常的发布程序无法正常工作。经检查,发现TI的SN74HC165DR芯片丝印与印象中的TI丝印风格不一样。于是找来之前购买的165芯片对比,发现丝印确实不同。TI的一号管脚指示一般是横杠,丝印中只有一个**图案,不会有TI字眼,而现货商提供的这片芯片,一号脚是圆点标识,丝印中印着TI两个字母。与现货商沟通,现货商一口咬定是产品批次问题。
然后我抓取波形分析,最终发现该芯片使用过程中,并行数据加载后,SH存取并行信号后,直接就输D7了,只需要7个CLK,就可以输出完整数据了。而TI的165芯片使用以及数据手册描述,都是并行数据加载后,需要8个CLK,才能将并行信号完整输出。
然后查找其他厂家74HC165数据手册,发现以NXP下安世的74HC165D,653就是并行数据加载后,7个CLK输出完整数据。
所以我的结论是,该芯片是国产不知名某芯厂贴标,由于74HC165两大主流厂商内部设计不一样,该贴片芯片厂商不管三七二十一,直接印大厂信息冒充进口的原因。
查了百度,只有NXP的代码,为了帮兄弟们日后设计时避雷,我将两家驱动贴出来,以下是两家驱动代码:
TI的SN74HC165DR两片级联
uint16_t HC165read(void)
{
uint8_t i,k;
uint16_t j, data2=0;
HC165_CLKINH_SetLow();
HC165_SH_SetLow();
k=0;
HC165_SH_SetHigh();
for(i=0;i<16;i++)
{
HC165_CLK_SetLow();
k=0;k=0;k=0;
HC165_CLK_SetHigh();
j = HC165_DATA_GetValue();
//data2 = data2 << 1;
data2 = (data2<<1)|j;
}
//hc165_data = data2;
return data2;
}
NXP的74HC165D两片级联:
uint16_t HC165read(void)
{
uint8_t i,k;
uint16_t j, data2=0;
HC165_CLKINH_SetLow();
HC165_SH_SetLow();
k=0;
HC165_SH_SetHigh();
data2 = HC165_DATA_GetValue();
for(i=0;i<15;i++)
{
HC165_CLK_SetLow();
k=0;k=0;k=0;
HC165_CLK_SetHigh();
j = HC165_DATA_GetValue();
//data2 = data2 << 1;
data2 = (data2<<1)|j;
}
//hc165_data = data2;
return data2;
} |