首页 > 其他分享 >HX711 侧重传感器的采样值读取-HAL库版本

HX711 侧重传感器的采样值读取-HAL库版本

时间:2023-05-18 16:35:21浏览次数:44  
标签:采样 HAL PIN HX711 void InitStructure GPIO

模块图

HX711模块+1KG5KG10KG20KG压力传感器套装 称重传感器 电子秤模块

 

 

 

测试代码

/*hx711侧重模块5kg测试*/
    Hx711_Init();// 相关的GPIO初始化

    static uint32_t weight;
  weight    =  get_hx711_ad();// 读取采样值    

main.h头文件相关的代码

//位带操作,实现51类似的GPIO控制功能
//具体实现思想,参考<<CM3权威指南>>第五章(87页~92页).
//IO口操作宏定义
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) 
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr)) 
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum)) 
//IO口地址映射
#define GPIOA_ODR_Addr    (GPIOA_BASE+12) //0x4001080C 
#define GPIOB_ODR_Addr    (GPIOB_BASE+12) //0x40010C0C 
#define GPIOC_ODR_Addr    (GPIOC_BASE+12) //0x4001100C 
#define GPIOD_ODR_Addr    (GPIOD_BASE+12) //0x4001140C 
#define GPIOE_ODR_Addr    (GPIOE_BASE+12) //0x4001180C 
#define GPIOF_ODR_Addr    (GPIOF_BASE+12) //0x40011A0C    
#define GPIOG_ODR_Addr    (GPIOG_BASE+12) //0x40011E0C    

#define GPIOA_IDR_Addr    (GPIOA_BASE+8) //0x40010808 
#define GPIOB_IDR_Addr    (GPIOB_BASE+8) //0x40010C08 
#define GPIOC_IDR_Addr    (GPIOC_BASE+8) //0x40011008 
#define GPIOD_IDR_Addr    (GPIOD_BASE+8) //0x40011408 
#define GPIOE_IDR_Addr    (GPIOE_BASE+8) //0x40011808 
#define GPIOF_IDR_Addr    (GPIOF_BASE+8) //0x40011A08 
#define GPIOG_IDR_Addr    (GPIOG_BASE+8) //0x40011E08 
 
//IO口操作,只对单一的IO口!
//确保n的值小于16!
#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)  //输出 
#define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  //输入 

#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  //输出 
#define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //输入 

#define PCout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  //输出 
#define PCin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)  //输入 

#define PDout(n)   BIT_ADDR(GPIOD_ODR_Addr,n)  //输出 
#define PDin(n)    BIT_ADDR(GPIOD_IDR_Addr,n)  //输入 

#define PEout(n)   BIT_ADDR(GPIOE_ODR_Addr,n)  //输出 
#define PEin(n)    BIT_ADDR(GPIOE_IDR_Addr,n)  //输入

#define PFout(n)   BIT_ADDR(GPIOF_ODR_Addr,n)  //输出 
#define PFin(n)    BIT_ADDR(GPIOF_IDR_Addr,n)  //输入

#define PGout(n)   BIT_ADDR(GPIOG_ODR_Addr,n)  //输出 
#define PGin(n)    BIT_ADDR(GPIOG_IDR_Addr,n)  //输入

 

头文件

#ifndef __HX711_H
#define __HX711_H
#include "main.h"

/*串口通信方式*/
//定义IO口
#define ADDO PCin(0)
#define ADSK PCout(1)

//读取AD值函数
uint32_t get_hx711_ad(void);//读取AD值函数

void Hx711_Init(void);// 相关的GPIO初始化
#endif

 

源文件

#include "hx711.h"

//初始化IIC  板 PC0->DOUT PC1->PD_SCK
void Hx711_Init(void)// 相关的GPIO初始化
{                         
    GPIO_InitTypeDef GPIO_InitStructure;
//    RCC_APB2PeriphClockCmd(    RCC_APB2Periph_GPIOA, ENABLE );    //使能GPIOA时钟
    __HAL_RCC_GPIOC_CLK_ENABLE (  );//启动外设工作的时钟
    /*配置输入SDA*/
    GPIO_InitStructure.Pin  = GPIO_PIN_0;
    GPIO_InitStructure.Mode = GPIO_MODE_INPUT ;          //输入模式
    GPIO_InitStructure.Speed =  GPIO_SPEED_FREQ_HIGH;
    GPIO_InitStructure.Pull  = GPIO_NOPULL;            
    HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
  //HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);     // 输出低
    /*配置输出SCK*/
    GPIO_InitStructure.Pin  = GPIO_PIN_1;
    GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP ;   //推挽输出
    GPIO_InitStructure.Speed =  GPIO_SPEED_FREQ_HIGH;    
    GPIO_InitStructure.Pull  = GPIO_PULLDOWN;         //  HX711的PD_SCK 为低电平时,芯片处于正常工作状
    HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_1,GPIO_PIN_RESET); // 输出高
}
// 读取采样值
 uint32_t get_hx711_ad(void)// 读取采样值
{ 
     unsigned long Count; 
     unsigned char i; 
     ADSK=0; 
     Count=0; 
     while(ADDO); //  HX711的DOUT 为高电平时,表明 A/D 转换器还未准备好输出数据
     for (i=0;i<24;i++){ 
         ADSK=1; // 数据时钟
         Count=Count<<1; 
         ADSK=0; // 数据时钟
         if(ADDO) Count++; 
     } 
     ADSK=1;   // 数据时钟
     Count=Count^0x800000; 
     ADSK=0;   // HX711的PD_SCK 为低电平时,芯片处于正常工作状
     return(Count); 
}

 

标签:采样,HAL,PIN,HX711,void,InitStructure,GPIO
From: https://www.cnblogs.com/excellentHellen/p/17412253.html

相关文章

  • PB6接SCL,PB7接SDA,IIC通信访问 24C02, STM32F103的HAL版本
    在野火霸道板子上,已有at24c02,256个字节。/*测试代码*/staticuint8_tflag;uint8_tdata_w[]={1,2,3,4,5};uint8_tdata_r[5]={0};AT24CXX_Init();//初始化IIC接口flag=AT24CXX_Check();//检查器件if(flag==0){u16Writ......
  • STM32+HAL库+SHT30温湿度传感器模块I2C通讯数字型
    模块与接线SHT30模块与引脚SCL-------PA4SCL--------PA5实现步骤:  1、IIC地址 0x45(板子上有)  2、启动温湿度测量写入0x2c0x06  3、延时10ms,等待测量结束  4、读测量值,发读指令,延时1ms,接收测量结果。  5、采样值转换为温度值、湿度值程序代......
  • .gitlab-ci.yml 语法错误导致 runner 报错“expected shallow list”
    报错信息:Runningwithgitlab-runner15.11.0(xxx)ongitrunnrxxx,systemID:s_xxxPreparingthe"shell"executor00:00Preparingenvironment00:00GettingsourcefromGitrepository00:01Fetchingchangeswithgitdepthsetto20...Reinitializ......
  • 光伏逆变器总控板,TMS320F28335,2路CAN通讯,2路485通讯,1个EEROM,2路AD采样电路。
    光伏逆变器总控板,TMS320F28335,2路CAN通讯,2路485通讯,1个EEROM,2路AD采样电路。主要功能为采样光伏电池电压,MPPT最大功率跟踪,功率计算,系统开关机等。并且有对应的元器件明细表。提供程序代码。特产适合做此类项目的工程师参考,或者新手作为模板参考。备注:公司成熟产品,提供代码!ID:92566......
  • 电子秤实物量产资料 原理图和PCB文件及BOM,源码HEX 量产HX711
    电子秤实物量产资料原理图和PCB文件及BOM,源码HEX量产HX711电子秤采集模块全套资料1.串口波特率19200;2.上电后直接串口打印称重数据;3.可以发指令校零传感器,读取称重数值;4.默认使用的是40Kg的传感器,其它传感器需要重新修正参数;5.有看门狗功能,减少程序异常;6.STM8F103驱动HX711包含原......
  • 采用拉丁超立方采样的电力系统概率潮流计算 (自适应核密
    采用拉丁超立方采样的电力系统概率潮流计算(自适应核密度估计,自适应带宽核密度估计)拉丁超立方采样属于分层采样,是一种有效的用采样值反映随机变量的整体分布的方法。其目的是要保证所有的采样区域都能够被采样点覆盖。该方法分成以下两步:①采样。对每个输入随机变量进行采样,确保随......
  • ArcGIS如何自动获得随机采样点?
      本文介绍基于ArcMap软件,实现在指定区域自动生成随机点的方法。  在GIS应用中,我们时常需要在研究区域内进行地理数据的随机采样;而采样点的位置往往需要在结合实际情况的前提下,用计算机随机生成。这一操作在ArcMap软件中就可以非常方便地进行。  已知现有如下一景栅格图像......
  • Metropolis Hastings采样和贝叶斯泊松回归Poisson模型|附代码数据
    全文下载链接:http://tecdat.cn/?p=23524最近我们被客户要求撰写关于采样的研究报告,包括一些图形和统计输出。在本文中,我想向你展示如何使用R的Metropolis采样从贝叶斯Poisson回归模型中采样。Metropolis-Hastings算法Metropolis-Hastings抽样算法是一类马尔科夫链蒙特卡洛(MCM......
  • 步进电机控制 stm32 hal库版本
    步进电机工作原理简介(28BYJ-48)https://www.bilibili.com/read/cv11379422?spm_id_from=333.999.0.0 驱动例程代码 1#ifndef__MOTOR_H2#define__MOTOR_H3#include"main.h"45////位带操作,实现51类似的GPIO控制功能6////具体实现思想,参考<<CM3权威指......
  • 基于国产M0核MCU平台,全开源双电阻采样FOC高压 风机量产程序,包含龙博格电机观测器,SVPW
    基于国产M0核MCU平台,全开源双电阻采样FOC高压风机量产程序,包含龙博格电机观测器,SVPWM,顺逆风启动,五段式与七段式调制等源码,完全可以移植到别的MCU平台。适合电机算法研究ID:19200640946461576......