新手入门
- 积分
- 7
- 金钱
- 7
- 注册时间
- 2018-10-17
- 在线时间
- 1 小时
|
最近帮实验室做个控制系统,买了淘宝现成的采集模块,AD7606,刚买回来烧例程就OK,扔下没管,国庆来了,突然就无法采集AD!!!!
问了技术,一问三不知,没办法,本人只好一点一点排查问题,发现除了sck 也就是时钟端其他管脚信号都好, SCK始终是高。
查了手册,串行数据输出是SCK是要上升沿的,然后打开例程源码,发现没有问题。
源码:
u16 SPI_ReceiveData(void)
{
u8 count=0;
u16 Num=0;
AD_SCK_HIGH();
for(count=0;count<16;count++)//读出16位数据
{
Num<<=1;
AD_SCK_LOW(); //下降沿有效
if(AD_MISO_IN)Num++;
AD_SCK_HIGH();
}
return(Num);
}
让人费解,然后我尝试把数据获取后的 SCK高注释掉,变成下边的。
u16 SPI_ReceiveData(void)
{
u8 count=0;
u16 Num=0;
AD_SCK_HIGH();
for(count=0;count<16;count++)//读出16位数据
{
Num<<=1;
AD_SCK_LOW(); //下降沿有效
if(AD_MISO_IN)Num++;
//AD_SCK_HIGH();
}
return(Num);
}
结果 用示波器查看SCK端发现了问题,如图。这样看起来像是有电容在SCK也就是 STM32的PC11脚,于是 |
|