ITPub博客

首页 > 嵌入式/内核开发 > 嵌入式/内核开发 > 《正点原子BEE BLOCK模块资料》ATK-MB019 模块使用说明

《正点原子BEE BLOCK模块资料》ATK-MB019 模块使用说明

原创 嵌入式/内核开发 作者:正点原子 时间:2025-04-09 09:15:58 0 删除 编辑

ATK-MB019 模块使用说明


        1,硬件连接

       这里以正点原子M48Z-M3最小系统板STM32F103版为例,给大家介绍一下模块和板卡的连接方法。其它板卡与模块的硬件连接方法,请大家在“ATK-MB019 超声波测距模块\3,程序源码\相应板卡例程文件夹\readme.txt”路径下查看。

       ATK-MB019超声波测距模块可通过杜邦线与正点原子M48Z-M3最小系统板STM32F103版进行连接,具体的连接关系,如下表所示:


表1.1超声波测距模块与M48Z-M3最小系统板STM32F103版连接关系


        2,实验功能


       2.1 ATK-MB019超声波测距模块测试实验


       2.1.1 功能说明

       在本实验中,串口会打印超声波测距模块所测量的距离值。需要查看这部分实验信息的用户,可用杜邦线将最小系统板STM32F103的PA9引脚和GND连接至外部的USB转串口设备,这样就可以通过XCOM上位机查看串口打印的信息了。

       开发板的LED0闪烁,提示程序运行。


       2.1.2 源码解读

       打开本实验的工程文件夹,能够在./Drivers/BSP目录下看到ATK_ULTRASONIC文件夹和TIM文件夹,其中ATK_ULTRASONIC文件夹中包含了ATK-MB019超声波测距模块的驱动文件,TIM文件夹中包含了通用定时器的驱动文件,如下图所示:


图2.1.2.1 ATK-MB019超声波测距模块驱动代码


图2.1.2.2 通用定时器驱动代码


       2.1.2.1 ATK-MB019超声波测距模块驱动

       下面简要介绍atk_ultrasonic.c中几个重要的API函数。


       1. 函数atk_ultrasonic_init()

       该函数用于初始化ATK-MB019超声波测距模块,具体的代码如下所示:

/**
 * @brief   初始化超声波测距模块
 * @param   无
 * @retval  无
 */
void atk_ultrasonic_init(void)
{
    GPIO_InitTypeDef gpio_init_struct;
    /* 使能GPIO端口时钟 */
    TRIG_GPIO_CLK_ENABLE();
    
    /* 配置TRIG控制引脚 */
    gpio_init_struct.Pin = TRIG_GPIO_PIN;               /* TRIG引脚 */
    gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;        /* 推挽输出 */
    gpio_init_struct.Pull = GPIO_PULLUP;                  /* 不上下拉 */
    gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;     /* 高速 */
    HAL_GPIO_Init(TRIG_GPIO_PORT, &gpio_init_struct);   /* 初始化TRIG引脚 */
    
    /* 配置PA3去捕获ECHO的输出的高电平持续时间 */
    gtim_timx_cap_chy_init(0xFFFF - 1, 72 - 1);  /* 以1Mhz的频率计数 捕获 */
}

       atk_ultrasonic_init()函数非常简单,这里进行了TRIG引脚初始化,便于控制该引脚的电平,以发出测试信号。除此之外,还配置了定时器的计数频率以及计数值,以1MHz的频率计数,后续将会用定时器2的通道4(PA3引脚)来捕获ECHO引脚的输出的高电平持续时间。


       2. 测距相关的系列函数

       该系列函数用于启动测距和计算距离值,具体代码如下所示:

/**
 * @brief   开启测距
 * @param   无
 * @retval  无
 */
void atk_ultrasonic_start(void)
{
    TRIG(1);
    delay_us(50);
    TRIG(0);
}
 
/**
 * @brief   测距函数
 * @param   high_timer : ECHO 高电平持续时间
 * @retval  测距距离 单位cm
 */
float atk_ultrasonic_distance(uint32_t high_timer)
{
atk_ultrasonic_start();
/* 距离 = ECHO高电平时间时间 * 340/2。(其中声速:340M/S) */
    return ((float)(high_timer * 170) / 10000.0f);  
}

        上述的两个函数分别用于启动测距功能和获取测量的距离值。在atk_ultrasonic_start()函数中,先拉高TRIG相关引脚,然后延时50us,接着拉低引脚,即可开启测量。在atk_ultrasonic_distance()函数中,先调用开启测量函数,然后计算距离值并返回。


       2.1.2.2 通用定时器驱动

       在图2.1.2.2中,gtim.c和gtim.h为通用定时器驱动文件,包含了定时器的初始化,输入捕获的配置等内容。关于通用定时器的驱动介绍,请查看正点原子各个开发板对应的开发指南中通用定时器章节。


       2.1.2.3 实验测试代码

     实验的测试代码在demo.c文件中,该文件在工程根目录下的 User文件夹。测试代码的入口函数为demo_run(),具体的代码,如下所示:

/**
 * @brief       例程演示入口函数
 * @param       无
 * @retval      无
 */
void demo_run(void)
{
    uint32_t temp = 0;
    uint8_t t = 0;
    
    atk_ultrasonic_init();                       /* 初始化超声波测距模块 */
    
    while (1)
    {
        atk_ultrasonic_start();
        if (g_timxchy_cap_sta & 0X80)            /* 成功捕获到了一次高电平 */
        {
            temp = g_timxchy_cap_sta & 0X3F;
            temp *= 0xFFFF;                       /* 溢出时间总和 */
            temp += g_timxchy_cap_val;           /* 得到总的高电平时间 */
            g_timxchy_cap_sta = 0;               /* 开启下一次捕获 */
            
            if(atk_ultrasonic_distance(temp) > 560)
            {
                printf("超过测距范围\r\n");     
            }
            else
            {
     /* 测距结果 */
                printf("测距距离:%.2f cm\r\n", atk_ultrasonic_distance(temp));     
            }
        }
        t++;
        if (t > 2)                                /* 200ms进入一次 */
        {
            t = 0;
            LED0_TOGGLE();                        /* LED0闪烁 ,提示程序运行 */
        }
        delay_ms(100);
    }
}

       从上面代码可以看出,整个测试代码的逻辑相对简单。初始化超声波测距模块后,在while循环中调用相关函数开始测距值,如果距离超过了测距的范围,则打印“超出测距范围”;如果测距正常,则打印测出的距离值。LED0闪烁表示程序正常运行。


       2.1.3 实验现象

       将ATK-MB019超声波测距模块按照第一节“硬件连接”中介绍的连接方式与开发板连接,并将实验代码编译烧录至开发板中。本实验使用串口输出调试信息,因此需将开发板的PA9连接至DAP虚拟串口(或USB转TTL模块)的RX引脚。完成连接后,可通过串口调试助手XCOM查看实验信息输出,如下图所示:


图2.1.3.1串口调试助手显示内容


       注:其它现象请看2.1.1功能说明。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040860/viewspace-3080362/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2024-08-30

  • 博文量
    588
  • 访问量
    765871