OpenEdv-开源电子网

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

关于stm32驱动hx711的问题

[复制链接]

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-4-30
在线时间
22 小时
发表于 2016-4-30 09:50:34 | 显示全部楼层 |阅读模式
1金钱
想写一个stm32驱动hx711模块的程序
初始化:

#define DT PEout(0)
#define SCK PEout(1)


void HX711_Init(void)        //???HX711??
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);

        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //CLK?????¨??????????
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOE,&GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//DATA?????¨??????????
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOE,&GPIO_InitStructure);       
}

读取数据值:
u32 DHT11_Read(void)
{
        u32 val = 0;
        u8 i = 0;
        DT=1;
        SCK=0;
        while(DT);   
        delay_us(5);
        for(i=0;i<24;i++)
        {
                SCK=1;
                val=val<<1;
                delay_us(5);  
                SCK=0;
                if(DT)  val++;
                delay_us(5);
        }
        SCK=1;
        val = val^0x800000;
        delay_us(5);
        SCK=0;
        delay_us(5);

        return val;
}


主函数:
while(1)
{
  printf("wendusi%f\r\n",DHT11_Read());
  delay_ms(500);

}
一共25个脉冲,用A通道采集,VCC用的是3.3v,
结果一直没有打印出数据,好像是DT一直是高电平,陷在while循环那里。这是怎么回事

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

86

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
483
金钱
483
注册时间
2013-12-3
在线时间
83 小时
发表于 2016-4-30 13:44:28 | 显示全部楼层
这是我移植的51的  你参考下, 我验证过是可以的
#include <hx711.h>
#include<delay.h>
u8 AMP;
u8 OFFSET;
u8 COEFFICIENT;

void HX711_Init(int amp,double co)
{
       
        RCC->APB2ENR|=1<<3;  //PORTB
        GPIOB->CRL&=0xFFFFFF00;
        GPIOB->CRL|=0x00000083; // PB0=SCK 输出  PB1=DOUT输入
        //GPIOB->ODR|=0<<0;
        //GPIOB->ODR|=1<<1;
        set_amp(amp);
        SCK=0;
        HX711_read();
       
       
}

void set_amp(int amp)
{
                switch (amp) {
        case 32: AMP = 2; break;
        case 64: AMP = 3; break;
        case 128: AMP = 1; break;
                }
}


long HX711_read()
{
        int i;
        long val=0;
        SCK=0;
       
       
        while(DOUT==0);
        for(i=0;i<24;i++)
        {
                pulse();
                val<<=1;
                if(DOUT==1)val++;
               
        }
        for(i=0;i<AMP;i++)
        {
                pulse();
        }
        return val& (1L << 23) ? val | ((-1L) << 24) : val;

       
}

void pulse()
{
        SCK=1;
        delay_us(3);
        SCK=0;
        delay_us(3);
}

double bias_read()
{
        return (HX711_read()-OFFSET)*COEFFICIENT;
       
}
回复

使用道具 举报

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-4-30
在线时间
22 小时
 楼主| 发表于 2016-4-30 21:22:44 | 显示全部楼层
yy21910115 发表于 2016-4-30 13:44
这是我移植的51的  你参考下, 我验证过是可以的
#include
#include

while(DOUT==0);一直陷在这里,程序无法运行
回复

使用道具 举报

10

主题

86

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
483
金钱
483
注册时间
2013-12-3
在线时间
83 小时
发表于 2016-5-1 10:37:01 | 显示全部楼层
你模块是不是有问题,卡这里的话说明没有数据输出
回复

使用道具 举报

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-4-30
在线时间
22 小时
 楼主| 发表于 2016-5-3 15:09:26 | 显示全部楼层
yy21910115 发表于 2016-5-1 10:37
你模块是不是有问题,卡这里的话说明没有数据输出

又换了个新模块,还是不行,是不是我用的是25个脉冲,是不是用A通道采集,输入电压不超过20mv?
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-4-14
在线时间
5 小时
发表于 2017-5-5 16:52:28 | 显示全部楼层
我也遇到了相同问题。。搞不定啊
回复

使用道具 举报

3

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2019-5-22
在线时间
30 小时
发表于 2019-7-15 10:53:51 | 显示全部楼层
搞不定啊
回复

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2019-7-11
在线时间
36 小时
发表于 2020-5-7 18:06:15 | 显示全部楼层
搞定了吗?
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2020-5-28
在线时间
13 小时
发表于 2020-6-7 22:23:16 | 显示全部楼层
你最后读的是HX711
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 05:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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