基于STM32F103的 AD模块HX710A调试日志

.硬件环境:基于STM32F103RET6高精度电子秤

通过HX710A获取称重传感器的码值:


void Ad_SCK_Set(uint8_t sel,  uint8_t st)
{
    if(st == HIGH)
    {
        GPIO_SetBits(Ad_Cfg[sel].SCK.Port, Ad_Cfg[sel].SCK.Pin);
    }
    else
    {
        GPIO_ResetBits(Ad_Cfg[sel].SCK.Port, Ad_Cfg[sel].SCK.Pin);
    }
}


uint8_t Ad_SDO_Get(uint8_t sel)
{
    return GPIO_ReadInputDataBit(Ad_Cfg[sel].SDO.Port, Ad_Cfg[sel].SDO.Pin);
}


uint8_t  Ad_Chip_Init(uint8_t  *err)
{
    uint8_t  i, j;
    GPIO_InitTypeDef GPIO_InitStructure;

    /*SCK*/
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    /*SDO*/
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);



    Ad_Cfg[AD1].SCK.Port = GPIOA;
    Ad_Cfg[AD1].SCK.Pin = GPIO_Pin_12;
    Ad_Cfg[AD1].SDO.Port = GPIOA;
    Ad_Cfg[AD1].SDO.Pin = GPIO_Pin_11;

    *err = 0;
    for(i = 0; i < 1; i++)
    {
        GPIO_SetBits(Ad_Cfg[i].SDO.Port, Ad_Cfg[i].SDO.Pin);  //将sdo拉高,检测芯片是否工作
        Ad_SCK_Set(i, LOW);

        for(j = 0; j < 10; j++)
        {
            if(Ad_SDO_Get(i) == LOW)
                break;
            DelayUs(100 * 1000);
        }

        if(j >= 10)
        {
            //Ad_PWR_Set(i, OFF);
            *err |= 1 << i;
        }

    }
    if(*err == 0)
        return TRUE;
    else
        return FALSE;
}


/*****************************************************************************
函数名称: Ad_Data_Read
函数功能: 获取内码
入口参数: 无
出口参数: 内码值
备注:
 *******************************************************************************/
uint32_t  Ad_Data_Read(uint8_t sel)
{
    uint8_t  i;
    uint32_t  u32AdValue = 0;
    sel = 0;

    GPIO_SetBits(Ad_Cfg[sel].SDO.Port, Ad_Cfg[sel].SDO.Pin);
    Ad_SCK_Set(sel, LOW);

    while (Ad_SDO_Get(sel));
    DelayUs(1);
    for (i = 0; i < 24; i++)
    {
        Ad_SCK_Set(sel, HIGH);
        DelayUs(2);
        u32AdValue <<= 1;
        Ad_SCK_Set(sel, LOW);
        DelayUs(2);
        if(Ad_SDO_Get(sel))
        {
            u32AdValue++;
        }
    }

    Ad_SCK_Set(sel, HIGH);
    DelayUs(2);
    u32AdValue ^= 0x800000;
    Ad_SCK_Set(sel, LOW);
    DelayUs(2);

    Ad_SCK_Set(sel, HIGH);
    DelayUs(2);
    Ad_SCK_Set(sel, LOW);
    DelayUs(2);

    Ad_SCK_Set(sel, HIGH);
    DelayUs(2);
    Ad_SCK_Set(sel, LOW);
    DelayUs(2);

    u32AdValue >>= 4;
    u32AdValue &= 0xFFFFF; //有效位为20
    return u32AdValue;
}

 

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: HX710A是一款集成化高性能单片机,它由51系列单片机基础架构组成,主频高达42MHz,拥有丰富的外设资源和强大的计算能力。它采用全新工艺设计,电源电压范围广,功耗低,适用于各种嵌入式应用。HX710A内部集成了2KB的RAM和16KB的Flash存储空间,使用起来非常便捷。此外,该单片机支持多达31个中断源,可以有效实现多任务并行处理。HX710A的外设资源包括16位定时器、2个串口、6路PWM输出、8路ADC输入等,能够完美适用于各种控制应用。HX710A还有以下特点: 1.支持ISP在线编程;2.采用双字节指令集,执行速度更快;3.支持低功耗模式;4.支持多种时钟源选择;5.可直接运行8051程序;6.集成368个编程字节的片内Bootloader(程序自我烧录); 7.支持中文编程环境Keil C. 总之,HX710A单片机是一款高性能、多功能、易于使用的单片机,适用于各种控制和嵌入式应用领域。 ### 回答2: 51单片机HX710A是一种常见的基于C语言的单片机开发板,主要用于嵌入式系统、自动化控制、智能家居、机器人等领域的应用。它采用AT89S52单片机作为核心处理器,具有8KB的Flash程序存储器和256B的RAM数据存储器,同时还具有较多的接口和外设:包括8个LED指示灯、4个按键、6个模拟量输入和12个数字量输入输出口,以及一个16×2字符LCD液晶显示屏等,这些接口和外设可以满足基于此开发板的各种应用需求。 HX710A开发板主要的应用开发环境是KEIL C51开发环境,支持汇编语言、C语言等多种编程语言,且兼容大部分51单片机的应用程序。其开发板主板和扩展板可以实现功能的扩展和灵活拼接,实现不同应用场景的需求。 HX710A的优点在于兼容性较好,容易上手,主板和扩展板灵活可配,并且有较多的资料和应用实例支持;同时其价格也相对较低,适合初学者或小型项目开发。不足之处在于其闪存和SRAM较小,无法满足一些大型应用的需求;同时其系统时钟频率也相对较低,可能会影响部分高性能应用。 ### 回答3: 51单片机 hx710a是一种基于51系列单片机的微控制器。它采用CMOS工艺和高速的8051体系结构内核,拥有32KB闪存、2KB RAM和512B EEPROM的存储空间,并且内部集成了多种外设和通信接口,如6路16位定时器、3路T0-T2计数器、8路外部中断、2路串行口、1路SPI接口和1路I2C接口等。此外,HX710A还支持多种中断和定时器模式,可用于处理定时、计数、PWM、脉宽测量等各种任务,具有较强的实时性和可靠性。 HX710A还具有低功耗特性,最低工作电压为2.7V,最大工作频率为30MHz。它可应用于各种嵌入式系统,如智能家居、智能电表、电动汽车控制、工业自动化等领域,适合于要求低功耗、高性能和复杂功能的应用。HX710A是目前较为流行的51系列单片机之一,广泛应用于国内外市场,得到了广大用户的认可和好评。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诺水城子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值