高中生
最后登录1970-1-1
在线时间 小时
注册时间2017-7-22
|
如题,我之前用的PD10作为PD10作为HX711的DT,PD11作为SCK转换数值就一直是8388608,后来换了PG2和PG3就一会是8388608,一会是8388607,HX711通道选的A通道增益128db,目前转换结果如下图,
其他的代码在附件中,使用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)
|
|