OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12784|回复: 8

【已解决】HX711在STM32F4里面一直显示83688608

[复制链接]

8

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2018-4-8
在线时间
26 小时
发表于 2018-4-8 12:31:51 | 显示全部楼层 |阅读模式
本帖最后由 zhczlzhang 于 2018-4-9 15:55 编辑

在论坛里面参考了很多人的HX711模块,可以知道,SCK引脚要设置为推挽输出,50MHZ,DOUT设置为浮空输入,50MHZ。初始化引脚之后是读取转换函数,这个没什么好说的,看着改就好。让我疑惑的是,我自认为程序写的应该没问题,但是串口一直显示83688608,我在上面放置物品,也不见重量发生变化。我看了论坛所有HX711的帖子,发现论坛很多大佬都碰到这个问题了,但是解决办法很多人都不说,有的说引脚接错了,但是我把E+E-引脚接反,DT,SCK都接反来试验过,还是不行,最后又改回原来的。我在探索板上给HX711提供5V,GND,实验过改为3.3V,GND,还是不行。所以请教诸位,看一下我的程序跟原理图,提出解决办法。给个思路或灵感也行啊。
[mw_shl_code=c,true]//hx711程序
#include "HX711.h"
#include "delay.h"
#include "stm32f4xx.h"

void AD_init(void)
{
                GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);

        GPIO_InitStructure.GPIO_Pin = CLK ;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//CLKòy½Å¶¨òåíÆíìêä3ö
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
        GPIO_Init(ADIO,&GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = DATA;//êy¾Y
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //DATAòy½Å¶¨ò帡¿Õêäèë
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(ADIO,&GPIO_InitStructure);                 
}


//****************************************************
//3ÆÖØ1
//****************************************************
unsigned long ReadAD(void)  //¶áADD¾Æ¬êä3öμÄêy¾Y¡£
{
        unsigned long count ;
        unsigned char i;
  GPIO_SetBits(ADIO,DATA);        //DOUT=1;
        GPIO_ResetBits(ADIO,CLK);        //CLK=0
  count=0;         
  while(GPIO_ReadInputDataBit(ADIO,DATA)); //μè′yDOUTμèóú0
        delay_us(1);
  for(i=0;i<24;i++)
        {
                  GPIO_SetBits(ADIO,CLK);                        //CLK=1               
                  count=count<<1;
                        delay_us(1);
                        GPIO_ResetBits(ADIO,CLK);                  //CLK=0
                        if(GPIO_ReadInputDataBit(ADIO,DATA))                //è&#231;1&#251;DOUTμèóú1                        
                                        count++;
                                        delay_us(1);
        }
         GPIO_SetBits(ADIO,CLK);        //CLK =1
  count=count^0x800000;
        delay_us(1);
        GPIO_ResetBits(ADIO,CLK);//CLK =0
  delay_us(1);
        return(count);                 
}


long double filter(void)  //&#187;&#172;&#182;ˉ&#190;ù&#214;μ&#194;&#203;2¨·¨μ&#196;oˉêy&#161;£   
{
        unsigned long max=0,min=0,SUM,BUF[12],Average;
        int i=0;        
for(i=0;i<12;i++)
        {
                BUF=ReadAD();
        //printf("%ld\r\n",BUF);
                if(i==0)
                {
                        max=BUF[0];
                        min=BUF[0];
                }
                if(i>0)
                {
                        if(BUF>max) max=BUF;
                        if(BUF<min) min=BUF;
                }
        }
        for(i=0;i<12;i++)
        {
                if(!(BUF==max||BUF==min))
                {
                        SUM=SUM+BUF;        
                }
        }
        Average=SUM/(12-2);
        return Average;
        
}

//主函数
#include "stm32f4xx.h"
#include "usart.h"
#include "delay.h"
#include "main.h"
#include "HX711.h"


  

int main(void)
{
         unsigned long t=0;

        delay_init(168);
        
        uart_init(9600);
        AD_init();        
        
        while(1)
                {
                        delay_ms(500);
                        t = ReadAD();
                        printf("t1=%ld\r\n",t);                                
                        delay_ms(500);
                        t = filter();
                        printf("t2=%ld\r\n",t);               

}
}

[/mw_shl_code]

微信图片_20180408121941.jpg
QQ截图20180404161045.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2018-4-8
在线时间
26 小时
 楼主| 发表于 2018-4-9 15:43:32 | 显示全部楼层
问题已解决!好吧其实出现这个问题很简单,我在这里直接说一下,免得很多人都不知道这个解决方法。STM32开发板跟单片机开发板有一点不一样,你在单片机开发板上,随便哪个IO口都可以作为独立的IO口来用,但是在探索者开发板上不行,因为他的IO口都被占用了,你如果用不是开发板上的外设,而是自己的外设去抢占IO口,就会出现操作无反应的状况。我把STM32F4开发指南看了一遍才在1.2.3章节找到IO口分配表,找到了可以独立的IO口,然后重新分配了IO口引脚,然后程序下载烧录,运行完美,没有一点问题。
所以大家记住,在使用相关的开发板时,一定要注意IO口的引脚分配问题。
回复 支持 2 反对 0

使用道具 举报

10

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2018-5-14
在线时间
46 小时
发表于 2018-9-30 16:03:01 | 显示全部楼层
zhczlzhang 发表于 2018-4-9 15:43
问题已解决!好吧其实出现这个问题很简单,我在这里直接说一下,免得很多人都不知道这个解决方法。STM32开 ...

好贴帮顶
行至水穷处 坐看云起时
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-3-13
在线时间
1 小时
发表于 2019-3-13 14:26:18 | 显示全部楼层
好贴帮顶
回复 支持 反对

使用道具 举报

0

主题

160

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2019-3-4
在线时间
4 小时
发表于 2019-3-13 16:08:10 | 显示全部楼层
不错不错!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-8-6
在线时间
3 小时
发表于 2020-8-12 16:14:06 | 显示全部楼层
zhczlzhang 发表于 2018-4-9 15:43
问题已解决!好吧其实出现这个问题很简单,我在这里直接说一下,免得很多人都不知道这个解决方法。STM32开 ...

正要用到,有帮助
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2021-3-13
在线时间
0 小时
发表于 2021-3-13 11:12:36 | 显示全部楼层
zhczlzhang 发表于 2018-4-9 15:43
问题已解决!好吧其实出现这个问题很简单,我在这里直接说一下,免得很多人都不知道这个解决方法。STM32开 ...

大佬,代码
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2021-11-23
在线时间
1 小时
发表于 2021-12-6 14:53:10 | 显示全部楼层
大佬 能发一下代码吗!
回复 支持 反对

使用道具 举报

0

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2019-2-13
在线时间
61 小时
发表于 2023-5-4 16:06:47 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-19 14:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表