任务名称
2011年_H题:波形采集、存储与回放系统【高职高专组】
任务要求
难度

一、任务
设计并制作一个波形采集、存储与回放系统,示意图如图 1 所示。该系统能同时采集两路周期信号波形,要求系统断电恢复后,能连续回放已采集的信号,显示在示波器上。

二、要求
1.基本要求
(1)能完成对 A 通道单极性信号(高电平约 4V、低电平接近 0V)、频率约 1kHz 信号的采集、存储与连续回放。要求系统输入阻抗不小于 10 kΩ,输出阻抗不大于 1kΩ。
(2)采集、回放时能测量并显示信号的高电平、低电平和信号的周期。原信号与回放信号电平之差的绝对值≤50 mV,周期之差的绝对值≤5%。
(3)系统功耗≤50mW,尽量降低系统功耗,系统内不允许使用电池。
2. 发挥部分
(1)增加 B 通道对双极性、电压峰峰值为 100mV、频率为 10Hz~10kHz 信号的采集。可同时采集、存储与连续回放 A、B 两路信号,并分别测量和显示 A、B 两路信号的周期。B 通道原信号与回放信号幅度峰峰值之差的绝对值≤10 mV,周期之差的绝对值≤5%。
(2)A、B 两路信号的周期不相同时,以两信号最小公倍周期连续回放信号。
(3)可以存储两次采集的信号,回放时用按键或开关选择显示指定的信号波形。
(4)其他。
三、说明
1.本系统处理的正弦波信号频率范围限定在 10Hz~10kHz,三角波信号频率范围限定在10Hz ~2kHz,方波信号频率范围限定在10Hz~1kHz。
2.预留电源电流的测试点。
3.采集与回放时采用示波器监视。
4.采集、回放时显示的周期和幅度应是信号的实际测量值,规定采用十进制数字显示,周期以“ms”为单位,幅度以“mV”为单位。 

评审标准

参考答案

GPT-4o给出的设计方案:


一、总体设计

设计一个采集、存储与回放系统,该系统能够同时采集两路1kHz的周期性信号波形,并在回放时保持信号的高电平、低电平、及信号周期。该系统包括以下模块:

  1. 输入电路:用于信号的调理和匹配。
  2. A/D转换器:将输入的模拟信号转换为数字信号。
  3. 存储与控制装置:存储采集到的数字信号,并控制数据的读写。
  4. D/A转换器:将存储的数字信号再转换回模拟信号。
  5. 输出电路:将D/A转换器输出的信号进行放大和调理后输出。

二、简单论证

该系统首先通过输入电路对来自两条通道的信号进行调理,以匹配A/D转换器的输入要求。A/D转换器将这些模拟信号数字化并将其传送到存储单元进行存储。在需要回放时,存储单元将信号传送给D/A转换器,再将其转换回模拟信号并通过输出电路输出。

三、重要指标的理论分析

  1. 信号采样和存储频率:由于输入信号频率为1kHz,采样率至少要2kHz(根据奈奎斯特采样定理,采样率需要是信号频率的两倍),以确保对信号的完整采样。
  2. 信号保真度:回放信号与原始信号的高电平与低电平电压偏差不超过50mV,信号周期偏差小于5%。这是为了保证回放信号与原始信号的一致性。
  3. 系统输入阻抗:系统输入阻抗应不小于10kΩ,以确保测量的准确性,同时输出阻抗不大于1kΩ,以确保输出信号的驱动能力。

四、电路原理图设计要点

  1. 输入电路:

    • 输入电路包括信号调理电路(如放大和滤波)和匹配电路(如阻抗匹配);
    • 使用运算放大器设计信号放大电路,并增加滤波电路滤除高频噪声。
  2. A/D转换器:

    • 使用高分辨率ADC(如12位或更高),至少2kHz的采样率;
    • 连接A/D转换器进行模拟信号的数字化。
  3. 存储与控制装置:

    • 使用带DMA功能的MCU(如STM32系列),方便数据高速读写;
    • 将数据存储在高速存储器(如SRAM)中。
  4. D/A转换器:

    • 使用高分辨率DAC(如12位或更高),以确保信号回放的精度;
    • 连接D/A转换器将数字信号转换回模拟信号。
  5. 输出电路:

    • 输出电路包括信号放大和缓冲电路;
    • 使用运算放大器设计输出缓冲电路,确保输出信号的稳定性。

五、核心器件设计要点

  1. 运算放大器(如OPA2211):

    • 用于输入和输出信号的调理;
    • 具有高精度、低偏置电压和低噪声的特性,确保信号保真度。
  2. ADC(如ADS1256):

    • 高采样率和高分辨率,确保采样精度;
    • 带有多通道输入和SPI接口,方便与MCU通信。
  3. MCU(如STM32F407):

    • 带有多个ADC和DAC接口,支持高速DMA数据传输;
    • 足够的存储器和处理能力,用于数据采集和处理。
  4. DAC(如DAC8568):

    • 高分辨率,确保信号回放精度;
    • 带有SPI接口,方便与MCU通信。

六、主要功能实现相关代码

主函数及框架

int main(void) {
    HAL_Init();
    SystemClock_Config(); 
    ADC_Init();
    DAC_Init();
    DMA_Init();
    Start_ADC();
    Start_DAC();

    while (1) {
        HAL_Delay(100);
    }
}
  • HAL_Init(): 初始化HAL库,配置系统时钟。
  • SystemClock_Config(): 配置MCU的系统时钟,以确保所有外设的正确时序运行。
  • ADC_Init(): 初始化ADC模块,用于将模拟信号转换为数字信号。
  • DAC_Init(): 初始化DAC模块,将数字信号转换为模拟信号。
  • DMA_Init(): 初始化DMA模块,用于高效的数据传输而不占用CPU周期。
  • Start_ADC()和Start_DAC(): 启动ADC和DAC,并配置它们进行DMA传输,从而实现高效数据采集和回放。

ADC (模拟到数字转换) 配置

void ADC_Init(void) {
    __HAL_RCC_ADC1_CLK_ENABLE();
    ADC_ChannelConfTypeDef sConfig = {0};
    hadc1.Instance = ADC1;
    hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
    hadc1.Init.Resolution = ADC_RESOLUTION_12B;
    hadc1.Init.ScanConvMode = DISABLE;
    hadc1.Init.ContinuousConvMode = DISABLE;
    hadc1.Init.DiscontinuousConvMode = DISABLE;
    hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
    hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
    hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
    hadc1.Init.NbrOfConversion = 1;
    hadc1.Init.DMAContinuousRequests = ENABLE;
    hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
    if (HAL_ADC_Init(&hadc1) != HAL_OK) {
        Error_Handler();
    }

    sConfig.Channel = ADC_CHANNEL_0;
    sConfig.Rank = 1;
    sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
    if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) {
        Error_Handler();
    }
}
  • __HAL_RCC_ADC1_CLK_ENABLE(): 启用ADC1时钟。
  • hadc1.Instance = ADC1: 设置ADC实例。
  • hadc1.Init: 配置ADC的各项参数,如分辨率、触发源等。
  • sConfig: 配置ADC通道,如选择通道、采样时间等。

DAC (数字到模拟转换) 配置

void DAC_Init(void) {
    __HAL_RCC_DAC_CLK_ENABLE();
    DAC_ChannelConfTypeDef sConfig = {0};
    hdac.Instance = DAC;
    if (HAL_DAC_Init(&hdac) != HAL_OK) {
        Error_Handler();
    }

    sConfig.DAC_Trigger = DAC_TRIGGER_NONE;
    sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
    if (HAL_DAC_ConfigChannel(&hdac, &sConfig, DAC_CHANNEL_1) != HAL_OK) {
        Error_Handler();
    }
}
  • __HAL_RCC_DAC_CLK_ENABLE(): 启用DAC时钟。
  • hdac.Instance = DAC: 设置DAC实例。
  • sConfig: 配置DAC通道,如触发源、输出缓冲等。

DMA (直接存储器访问) 配置

  • __HAL_RCC_DMA2_CLK_ENABLE(): 启用DMA2时钟。
  • DMA参数配置: 配置DMA传输的各项参数,包括通道、方向、增量模式等。

启动ADC和DAC

void Start_ADC(void) {
    if (HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adcBuffer, 1024) != HAL_OK) {
        Error_Handler();
    }
}

void Start_DAC(void) {
    if (HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1, (uint32_t*)adcBuffer, 1024, DAC_ALIGN_12B_R) != HAL_OK) {
        Error_Handler();
    }
}
  • HAL_ADC_Start_DMA(): 使用DMA启动ADC采集,将数据存储到adcBuffer。
  • HAL_DAC_Start_DMA(): 使用DMA启动DAC回放,从adcBuffer中读取数据。

错误处理函数

void Error_Handler(void) {
    while (1) {
        // 产生错误时进入死循环,用户可添加相应的错误处理代码
    }
}
  • Error_Handler():当发生错误时,系统进入死循环,用户可以在此添加具体的错误处理机制。

本题考察的主要知识点:

  1. 信号采集与处理:设计能够准确采集多个通道的模拟信号,尤其是在高低电平交替变化频率高达1kHz的情况下。
  2. 模拟/数字转换(ADC和DAC):理解和应用ADC和DAC的基本原理,实现信号的准确采样和回放。
  3. 存储与控制:使用MCU进行数据采集、存储管理和控制,理解DMA和中断机制以确保数据快速可靠传输。
  4. 数据展示与接口:控制显示设备展示采集信号的相关信息,掌握与外设通信接口如I2C、SPI等。
  5. 功耗管理:设计低功耗系统,确保总功耗低于50mW。
  6. 误差控制与校准:控制系统误差在预定范围内,确保系统具备高精度和稳定性。
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号