求用过HX711的大侠拔刀相助,,
最近在做类似电子称的东西,这两天一直在调HX711模块,读出来的数据一直是8388608,不知道为何,是压力传感器的问题还是HX711的问题,实在解决不了了,求大神帮忙,小弟在此先谢过了,unsigned long Read_HX711(void)
{
unsigned long val = 0;
unsigned char i = 0;
GPIO_SetBits(GPIOB,GPIO_Pin_1); //DOUT
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1));
delay1_us(2);
for(i=0;i<25;i++)
{
GPIO_SetBits(GPIOB,GPIO_Pin_2);
val = val << 1;
delay1_us(2);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
if( GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1))
val++;
delay1_us(2);
}
GPIO_SetBits(GPIOB,GPIO_Pin_2);
val = val^0x800000;
delay1_us(2);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
delay1_us(2);
return val;
}
示波器查一下ADC入口的电压值 如果都一致,就是外围电路问题。 您好请问问题解决了吗? 不知道LZ解决了没有。为了以后有新手使用该IC,还是说一下。
GPIO_SetBits(GPIOB,GPIO_Pin_1); //DOUT
这一句不需要的,在配置时将 DOUT引脚设置为浮空输入模式(规格书上说不要带上下拉电阻,减少电流干扰)。当然如果设置为开漏输出的话,这一句是不影响的,但是多余了。因为不像I2C那样需要双向的。
还有for(i=0;i<25;i++) 是0到24,共有25次,多了一次,数据变成25位了。应改为
for(i=0;i<24;i++)。
页:
[1]