1.ads1118用3.3v供电,室温10~18摄氏度。
2. SPI_RW_Reg(0x849B);
while (1)
{
delay(0xf0000);
a=SPI_RW_Reg(0x8499);
printf("\n\r The Value is %08x \r",a);
}
3.得到的数据
The Value is 0890049a ~ 08c8049a
4.转换成温度大概是50摄氏度,跟实际不同。
Yun Zhang:
回复 Jack Li:
按照以上功能代码,写入0x81F20000后,我在室温20度左右,得到的原始数据是0x0680,乘以0.03125得到温度为摄氏52度。
为什么差这么远呢?
unsigned char cmd[4]={0x81,0xF2,0x00,0x00};
CS_0; //拉低SSN,片选信号使能
for(i=0; i<4; i++)
{
while (!(SPI1_SR & BIT1)); //等待发送缓冲区空
SPI1_DR = cmd[i];
while (!(SPI1_SR & BIT0)); // 等待接收到一个有效数据字节
GetData[i] = SPI1_DR;
}
CS_1;
Decapton Wang:
回复 Yun Zhang:
为什么写81F2?手册22页,最后一位应该写1,是不是应该写成81F3?
Yun Zhang:
回复 Decapton Wang:
前面的代码,如果写入0x81F381F3,得到的4字节数据是0x07 18 02 C9,其中温度数据是0x0718,计数结果已经超过50度了,而室温肯定低于20度的。
SANPIAN:
请问该问题解决了吗?我遇到了类似的问题,我读出来计算的温度为80度左右,不知道怎么回事?