大佬 我也遇到了 一直卡在while(HX711_DOUT);语句中跳不出来,最后您是咋解决的呀?同样的程序在stc89c51学习板上面就可以 在STC8H单片机上面就不行了。还请指教 |
你检查一下你的模数转换读取那一块,和标准函数对比一下 |
simon11 发表于 2020-3-6 15:29 IO口的上拉电阻不能太大,1K就好了,我开始用了10K,波形有问题! |
大佬,解决了吗,我也是读数一直为零,搞了好久 |
kmsj 发表于 2019-9-15 17:53 感谢大佬分享,我再试试吧 |
最近买了HX711套件调试,一看资料,程序很简单,然而就是这个简简单单的程序,硬是调了两天都调不出来,搞得我简直就是怀疑人生。经过百度,发现很多人遇到这些情况,要么读数永远为0,要么永远是7FFFFF,要么就是while(HX711_DOUT)跳不过,这些问题我全部遇到。一开始以为是上拉电阻问题,官方资料有句话:“与DOUT相连的MCU接口应设置为输入口,并且不接任何拉高或拉低电阻,以减少MCU与ADC之间的电流交换(干扰)”,这句话估计坑了很多人,我也被坑,去掉上拉电阻还是不行,把上拉电阻换成100K,解决了while(HX711_DOUT)跳不过的问题,但是,读数永远为0,之前读数永远为7FFFFF。万般无奈的情况下,用示波器看看波形,不看不知道,一看吓一跳,PD_SCK高电平脉冲宽度高达80us,立即惊出一身冷汗!突然想起官方资料介绍PD_SCK高电平保持最小时间0.2us,最大时间50us,还有更重要的一句话:“如果PD_SCK从低电平变高电平并保持在高电平60us,HX711即进入断电状态”,这个才是重点,估计很多人忽略了。 我是先用51单片机调试程序,然后再移植到AVR单片机,51单片机用的是外部6兆晶体,换成仿真器内部晶体,具体多少兆不太清楚,反正PD_SCK高电平保持时间缩短到20多us,读数立马就正常了,又用外部6兆晶体,把优化等级调到7级,读数正常,此时的PD_SCK高电平保持时间是45us,把优化等级调到6级,读数不正常,PD_SCK高电平保持时间是80us,基本上可以断定,PD_SCK高电平保持时间在50us以内没有问题,while(HX711_DOUT)等待时间高达92.5ms,编程序的时候就要注意了,肯定不能傻等,DOUT和SCK的上拉电阻恢复到10K对程序没有影响,至于“MCU与ADC之间的电流交换(干扰)”,那是后面考虑的事情了,手头上有两套模块,一套的读数是0x008237××,另一套是0x007F3F××,误差怎么那么大?先不管了,慢慢折腾………………。 |
tyrl800 发表于 2019-9-13 18:43 好的,我再仔细检查一下,感谢 |
f556 发表于 2019-9-13 17:33 好的,谢谢师傅,我试试看 |
while(HX711_DOUT);语句中跳不出来,接线没有错误的话,估计是芯片有问题 |
跳不过while,硬件电路有问题。DOUT和SCK可以直接接单片机IO口 |
来51学习的 发表于 2019-9-13 12:19 前辈,直接DOUT和SCK接单片机IO口,可行吗? |
有可能是 HX711_DOUT 端口接法错误 |