一种实时收发超声波检测嵌入式软件—设计文档

发布于:2021-09-12 17:28:27

孝感定原电子科技有限公司

文档编号

产品版本

密级

产品名称:
一种实时收发超声波检测软件

共页

软件设计说明书

软件详细设计报告
目录
摘 要 ...................................................................................................................................................... 3 1 详细设计 ................................................................................................................................. 3 1 .1 软件简述.....................................................................................................................3 1 .2 软件功能描述 ............................................................................................................. 3 1 .3 频率脉宽测量流程处理 ..............................................................错误!未定义书签。 1 .4 频率脉宽测量流程处理 ............................................................................................. 8 1 .5 SD 卡的存储通讯处理............................................................................................. 10 1 .6 PWM 脉冲发射控制 ................................................................................................ 11 2 编程协定 ............................................................................................................................... 13 2 .1 操作系统...................................................................................................................13 2 .2 调试工具...................................................................................................................13 2 .3 编译链接工具 ........................................................................................................... 13

仅供内部使用

2

软件详细设计报告
摘要
在高频的超声波数据采集及频率分析的应用中,通常会采用实收实发的系统来模拟收到信号,目前最 经常采用的模式是使用下位机高速连续采样,上位机进行数据分析的模式,然后在将检测的信号通过 D/ A 发送出去。这种模式可以完成 M 级甚至于G级的数据连续采样,目前已经在高速的工业信号采集中得到 了广泛的应用。
提出基于 STM32 的实收实发系统,集成了 ARM 公司的浮点 DSP 指令集,可以对数据进行信号滤波 以及 FFT 运算,计算能力超过 TI 的 200M 主频的 DSP;由于采用了片上系统设计,因此片内集成了大量的 外设,具有较强的控制通信能力,很适合在工业控制信号处理中使用。整个系统基于 STM32 的低功耗设计, 且系统体积较小,整个系统可以在不依赖主机的情况下进行独立工作,具有较好的应用前景。
该软件属于智能检测软件主要用于电源设备的内部监控控制,能够保障大功率电源机柜的正常运转。 软件工作中能够对过流、过压、过温进行相应的补偿操作,状态数据可以存储在 EEPROM 中,方便对问题 的追溯。
关键词 数据采集 频率分析
1 详细设计
1 .1 软件简述
本软件设计的目的是实现快速鉴频,测量脉冲宽度等功能;并且在检测结束后延时发射单频脉冲信号, 并模拟信号拖尾的情况。同时还带有 UART 通信接口,采用 DMA 方式工作,用于与上位机的数据通信。 数据采样的结果通过 SDIO 接口存入 SDHC 卡中。经过实际测试,系统的稳定可靠,频率计算精准,PWM 频率精度高,本系统具有较好的应用价值。
1 .2 软件功能描述
1 .2.1 软件功能介绍
本软件提出基于 STM32 的超声波实收实发系统主要由 3 部分构成: 1)多路信号调理输入; 2)多路轮询切换; 3)主控模块; 4)模拟比较器 5)数模转换 6)LED 状态指示 通过微控制器作为主控单元,对信号进行快速鉴频,对测量脉冲宽度等信号进行数据存储,硬件总体 设计如图 1 所示。 1 .2.2 软件基本框架
信号调理部分采用了模拟比较器输入的结构,下图是本软件的基本框架图和主程序流程图。

仅供内部使用

3

软件详细设计报告

SD卡波形数据存储

信号输入 信号输入 信号输入 信号输入

频率脉宽测量模块

多路轮询切换

模拟比较器

主控模块

数/模转换

LED状态指示

图一 基本框架图

信号通过高速运放搭建的模拟比较器,比较器的比较电压通过 STM32F417 的数模转换器提供,用于 初始化进行噪声采集,门限自适应,这样可以滤除存在于信道中的噪声。
若开机检测到串口发送指令,则程序切换到 USART 串口收发模式,可以进行参数设定和数据的导出

仅供内部使用

4

软件详细设计报告
操作。 信号经过了模拟比较器后得到了一个标准的方波信号,方波信号进入到多路轮询模块中进行通道切换。

启动初始化

串口指令检测
NO NO
噪声检测
YES
信号处理

YES 启动UART 启动SDIO

开启延时定时器

开启PWM脉冲宽度 定时器

开启脉冲宽度定时 器

发射脉冲

记录结果

图二 主程序流程图

仅供内部使用

5

软件详细设计报告

1 .3 模数转换处理模块

首先利用 STM32F417 片内的 ADC 对外部噪声进行采集,由于需要判断的信号频率在 100~300kHz, 因此采样率需要设定为 300kHz的 2 倍以上。
单个 ADC 控制器工作的最高频率为 36MHz,并且一个采样周期最短为 15 个工作周期,因此最大的 采样率为 2.4MHz。不过对于更为高速的信号,STM32F417 可以将 3 路 ADC 并联使用,形成交错采样, 因此 STM32F417 最高的采样率为 7.2MHz。
信号输入

信号输入 信号输入 信号输入

ADC

数据门限判定

数据比较器

1 .3.1 程序流程图

仅供内部使用

6

软件详细设计报告
信号输入
多路通道切换指令

ADC1采集

ADC2采集

信号门限判定

DAC设定

1 .3.2 设备侧实现

模拟数据比较

仅供内部使用

7

软件详细设计报告
为了保证采样的精度,因此采用了 2 路 ADC 并联使用,使得采样率达到 4.8MHz,保证了在 500k Hz的噪声频带上也能有 10 倍的采样率。
将噪声采集后使用 DMA 传输 8192 个点的噪声信号,计算噪声的幅度,并根据噪声的最大值与均方根 值确定比较器的电压幅度门限,然后通过 DAC 发出门限电压信号给比较器,形成电压门限。
承载了单频脉冲的待测信号经过了模拟比较器后变成了 1 个方波信号,方波信号进入了微控制器芯片 检测端,该信号会触发中断,从而开始记录信号的脉冲次数以及信号的脉冲长度,通过脉冲长度与脉冲次 数的商值可以得到信号的频率、脉宽。当信号的 2 次脉冲的间隔小于预设区间或者大于预设区间时,就会 被判定为无效脉冲或者是噪声脉冲,由此减小信号的虚警概率。
1 .4 频率脉宽测量模块
经过频率计算后,通过定时器进行物理延时,模拟信号传播的时间,在延时后,启动 PWM 定时器, 将测量的频率值输入至 PWM 定时器中。同时再启动一个定时器,作为控制 PWM 信号脉冲宽度的定时器。 控制脉冲宽度的定时器控制发射的时间需要比检测到的脉冲长度长 20%,以模拟接收到的高频声信号的拖 尾现象。
方波信号

定时器

中断发生器

脉冲分析模块

计数器

仅供内部使用

8

软件详细设计报告 1 .4.1 程序流程图
方波信号输入
中断检测

定时器计时

上升沿记录器

脉冲宽度分析

脉冲频率计算

1 .4.2 设备侧实现
软件上电初始化自检开始,先进行微处理器外设初始化,包括片内外设串口,定时器,CAN 接口,IO 口等。把芯片默认的引脚跟内部的外设资源连接起来,即定义引脚的功能模式。
然后读取温度传感器的信号,内部电压信号,电流信号等。最后进入 while 循环程序之前,对程序里 面定义的全局变量进行上电初始化赋值。若出现异常,系统自动恢复出厂设置,进行系统报警,并将数据 记录到 EEPROM 中。

仅供内部使用

9

软件详细设计报告
1 .5 SD 卡的存储通讯处理
通过微控制器的 SDIO 的接口进行通信,通过 CMD 命令进行 SDHC 卡封控制,实现数据的存储,具 体初始化与工作的流程如下图。 1 .5.1 程序流程图
开始
CMD0 NO
CMD8
YES
ACMD41
CMD2

CMD3

仅供内部使用

10

软件详细设计报告
1 .5.2 设备侧实现 STM32F417 有一个 SDIO 的接口,可以实现 4 线 SD 卡存储或者是其他符合 SDIO 协议的设备工作,
例如 SDIOWIFI 设备等。这里采用了基于 2.0 标准的 SDHC 卡,这种类型的卡出了容量远远大于第 1 代 标准的卡以外,在初始化的程序上也有所不同,加入了 CMD8 命令可以确保工作电压的稳定运行。
1 .6 PWM 脉冲发射控制
首先利用 STM32F407 片内的 ADC 对外部噪声进行采集,由于需要判断的信号频率在 300~500kHz, 因此采样率需要设定为 500kHz的 2 倍以上。
STM32F407 的单个 ADC 控制器工作的最高频率为 36MHz,并且一个采样周期最短为 15 个工作周期, 因此最大的采样率为 2.4MHz。不过对于更为高速的信号,STM32F407 可以将 3 路 ADC 并联使用,形 成交错采样,因此 STM32F407 最高的采样率为 7.2MHz。

脉冲宽 度定时


PWM定时 器

延时定时 器

脉冲发射 器

仅供内部使用

11

软件详细设计报告 1 .6.1 子程序流程图
启动脉冲定时器
装载PWM数据

开启延时定时器

开启PWM

开启脉冲宽度定时 器

发射脉冲

1 .6.2 设备侧实现 经过频率计算后,通过定时器进行物理延时,模拟信号传播的时间,在延时后,启动 PWM 定时器,

仅供内部使用

12

软件详细设计报告
将测量的频率值输入至 PWM 定时器中。同时再启动一个定时器,作为控制 PWM 信号脉冲宽度的定时器。 控制脉冲宽度的定时器控制发射的时间需要比检测到的脉冲长度长 20%,以模拟接收到的高频声信号的拖 尾现象。
2 编程协定 2 .1 操作系统
Win7 操作系统, keil MDK Uvision5 集成开发环境
2 .2 调试工具
J-link V8 仿真调试器
2 .3 编译链接工具
Keil Uvision 5

仅供内部使用

13


相关推荐

最新更新

猜你喜欢