最近在做类似电子称的东西,这两天一直在调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; } |
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++)。
评分
查看全部评分