野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11212|回复: 2

大佬进来帮忙看看 我最近做毕设用F407+HX711做电子秤但是转换出来一直是8388608

[复制链接]
发表于 2019-4-27 22:31:20 | 显示全部楼层 |阅读模式
如题,我之前用的PD10作为PD10作为HX711的DT,PD11作为SCK转换数值就一直是8388608,后来换了PG2和PG3就一会是8388608,一会是8388607,HX711通道选的A通道增益128db,目前转换结果如下图,
QQ截图20190427221201.png 其他的代码在附件中,使用F407的HAL库,求大佬帮忙看看,万分感谢
hx711目前引脚配置和hx711转换部分代码如下:
[mw_shl_code=c,true]// 引脚定义
#define HX711_DT_Pin GPIO_PIN_2
#define HX711_DT_GPIO_Port GPIOG
#define HX711_SCK_Pin GPIO_PIN_3
#define HX711_SCK_GPIO_Port GPIOG
// 引脚配置
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOG_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(HX711_SCK_GPIO_Port, HX711_SCK_Pin, GPIO_PIN_RESET);

  /*Configure GPIO pin : HX711_SDA_Pin */
  GPIO_InitStruct.Pin = HX711_DT_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(HX711_DT_GPIO_Port, &GPIO_InitStruct);

  /*Configure GPIO pin : HX711_SCK_Pin */
  GPIO_InitStruct.Pin = HX711_SCK_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  HAL_GPIO_Init(HX711_SCK_GPIO_Port, &GPIO_InitStruct);

}
// HX711数据转换部分代码
uint32_t HX711_Read(void)
{
        uint32_t val = 0;
        // 如果HX711DT引脚为高电平表示HX711未准备好转换数据,此时应当拉低SCK等待HX711准备好
        HAL_GPIO_WritePin(HX711_SCK_GPIO_Port, HX711_SCK_Pin, GPIO_PIN_RESET);
        // 保持2us确保HX711检测到SCK拉低
        Delay_us(2);
        // 检测HX711准备好
        while (HAL_GPIO_ReadPin(HX711_DT_GPIO_Port, HX711_DT_Pin));
        // HX711已经准备好输出转换数据 向HX711发送信号开始接受转换数据共24个脉冲周期
        for (uint8_t counter=0;counter<24;counter++)
        {
                HAL_GPIO_WritePin(HX711_SCK_GPIO_Port, HX711_SCK_Pin, GPIO_PIN_SET);
                Delay_us(1);
                val = val << 1;
                if (HAL_GPIO_ReadPin(HX711_DT_GPIO_Port, HX711_DT_GPIO_Port))
                        val += 1;
                HAL_GPIO_WritePin(HX711_SCK_GPIO_Port, HX711_SCK_Pin, GPIO_PIN_RESET);
        }
        // 设置下一次读取转换的通道为通道A增益为128dB
        HAL_GPIO_WritePin(HX711_SCK_GPIO_Port, HX711_SCK_Pin, GPIO_PIN_SET);
        Delay_us(1);
        val = val ^ 0x800000;
        HAL_GPIO_WritePin(HX711_SCK_GPIO_Port, HX711_SCK_Pin, GPIO_PIN_RESET);
        Delay_us(1);
        return val;
}[/mw_shl_code]
ElectricScales.zip (26.83 KB, 下载次数: 35)



回复

使用道具 举报

发表于 2019-4-28 09:12:50 | 显示全部楼层
你试试先把时钟拉低在读数据看看,就是你代码的49行移动到47行前面试试看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-28 22:37:16 | 显示全部楼层
lyons 发表于 2019-4-28 09:12
你试试先把时钟拉低在读数据看看,就是你代码的49行移动到47行前面试试看。

您好  我试了一下 没有变化
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 15:33 , Processed in 0.029126 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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