|
本帖最后由 yiminglei_2 于 2015-7-15 00:12 编辑
刚刚接触MAX6675,发现个问题请教大家,谢谢:
发现个奇怪的问题,通过GPIO读MAX6675,读回来的12位温度数据只有低7位,高5位数据始终为0,导致转换后的温度只能到31度,再高一点就从0开始了。
如果把热电偶开路,则读回来的16位数据为:0111 1111 1111 1101,这个数据是正常的,也即能够识别到热电偶开路,温度数据全为1。
如果把热电偶短路,则显示的是常温(24-26度)。
我反复查看过软件,不会存在变量范围的问题,因为每个比特位都是通过GPIO一个一个读出来看的。
因此感觉MAX6675没有把温度数据的高5位输出,难道是假货?大家有没有遇到这样的情况?谢谢!
以下是读取MAX6675的代码:
u16 MAX6675_Read(void)
{
u16 res=0,s=0;
u32 i;
MAX6675_CLR_CS();
delay_us(50);
s=MAX6675_SO_READ();
printf("0-%d\r\n",s);
if(s == 1)
{
res++;
}
delay_us(50);
for(i=1;i<16;i++)
{
MAX6675_SET_SCK();
delay_us(50);
MAX6675_CLR_SCK();
delay_us(50);
res<<=1;
s=MAX6675_SO_READ();
printf("%d-%d\r\n",i,s);
if(s == 1)
{
res++;
}
delay_us(50);
}
MAX6675_SET_CS();
return (res);
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|