STM32实例源码剖析(拉力模块调试)

称重模块+AD模块
hx711(海芯).pdf

STM32实例源码剖析(拉力模块调试)_第1张图片

官方历程

sbit ADDO = P1^5;
sbit ADSK = P0^0;
unsigned long ReadCount(void){
unsigned long Count;
unsigned char i;
ADSK=0;
Count=0;
while(ADDO);
for (i=0;i<24;i++){
ADSK=1;
Count=Count<<1;
ADSK=0;
if(ADDO) Count++;
}
ADSK=1;
Count=Count^0x800000;
ADSK=0;
return(Count);
}

STM32实例源码剖析(拉力模块调试)_第2张图片

我写的一个demo(仅供参考)

void ReadPressure(int index, int32_t* pressure)    //读取压力传感器
{
    int32_t Count;
    int32_t i;
    _SCK_RESET(index);  //使能AD( PD_SCK 置低)
    Count=0;
    delay_us(1);
   
    //while(_DIN);  //AD转换未结束则等待,否则开始读取
    if(_DIN(index))
    {
        return;////AD转换未结束则返回,否则开始读取
    }
   
    for (i=0;i<24;i++)
    {
        _SCK_SET(index);  //PD_SCK 置高(发送脉冲)
        Count=Count<<1; //下降沿来时变量Count左移一位,右侧补零
        _SCK_RESET(index);  //PD_SCK 置低
        if(_DIN(index)) Count++;
    }
    _SCK_SET(index);
    Count=Count^0x800000; //第25个脉冲下降沿来时,转换数据
    _SCK_RESET(index);
    *pressure = Count;
    delay_us(1);
}

你可能感兴趣的:(STM32深入剖析实践)