Electricity/移植说明.md

3.2 KiB
Raw Blame History

定时器电刺激综合测试工程移植说明

项目概述

本项目将ENS_EMSsine_TEST中的电刺激功能移植到TIMER_DEMO中实现GPIO定时翻转电平的同时电刺激通道输出方波且二者互不干扰。

移植内容

1. 新增文件

升压电压选择模块

  • FWLIB/include/ENS1_BOOST.h - 升压电压选择头文件
  • FWLIB/source/ENS1_BOOST.c - 升压电压选择实现

功能:

  • boost_voltage_select_11V() - 设置11V升压
  • boost_voltage_select_15V() - 设置15V升压
  • boost_voltage_select_26V() - 设置26V升压
  • boost_voltage_select_45V() - 设置45V升压
  • boost_voltage_select_55V() - 设置55V升压

波形生成器模块

  • FWLIB/include/ENS1_WAVEGEN.h - 波形生成器头文件
  • FWLIB/source/ENS1_WAVEGEN.c - 波形生成器实现

功能:

  • wavegen_Init() - 初始化波形生成器
  • wavegen_Start() - 启动波形生成器
  • wavegen_Stop() - 停止波形生成器
  • wavegen_driverA_sine_test() - 驱动器A正弦波测试
  • EMS_Configure() - 配置电刺激参数
  • EMS_Start() - 启动电刺激
  • EMS_Stop() - 停止电刺激
  • EMS_UpdateIntensity() - 更新电刺激强度
  • EMS_Process() - 电刺激主循环处理

2. 修改文件

主程序 (USER/mian.c)

  • 添加电刺激功能初始化
  • 配置电刺激参数
  • 在主循环中调用EMS_Process()处理电刺激

定时器中断 (FWLIB/source/ENS1_TIMER.c)

  • 修改定时器中断处理函数,添加电刺激状态提示

功能特性

1. 定时器功能

  • GPIO19每1秒翻转一次电平
  • 通过UART输出定时器状态信息
  • 运行在定时器中断中

2. 电刺激功能

  • 方波电刺激输出
  • 可配置频率、强度、持续时间等参数
  • 运行在主循环中,与定时器互不干扰

3. 系统配置

  • 系统时钟32MHz HSI
  • 升压电压26V默认
  • UART波特率115200
  • 定时器中断周期1ms

使用方法

1. 编译和烧录

  1. 使用Keil MDK打开ENS001_BASIC_PRJ.uvprojx
  2. 编译项目
  3. 烧录到目标芯片

2. 运行效果

  • GPIO19每1秒翻转一次用于指示定时器运行状态
  • 电刺激通道输出方波信号
  • 通过UART输出运行状态信息

3. 参数配置

可以通过修改main()函数中的ems_config结构体来调整电刺激参数:

EMS_Config_TypeDef ems_config = {
    .frequency = 100,    // 频率 (Hz)
    .duration = 1000,    // 持续时间 (ms)
    .intensity = 128,    // 强度 (0-255)
    .rest_time = 100,    // 休息时间 (ms)
    .silent_time = 50    // 静默时间 (ms)
};

技术特点

1. 模块化设计

  • 升压模块独立封装
  • 波形生成器模块独立封装
  • 便于维护和扩展

2. 互不干扰

  • 定时器运行在中断中
  • 电刺激运行在主循环中
  • 两个功能完全独立

3. 参数可配置

  • 电刺激参数可通过结构体配置
  • 升压电压可选择不同档位
  • 便于适应不同应用需求

注意事项

  1. 确保目标芯片支持波形生成器外设
  2. 电刺激输出需要连接相应的电极
  3. 升压电压选择需要根据实际应用需求调整
  4. 电刺激强度不宜过高,避免对人体造成伤害

版本信息

  • 版本V1.0
  • 日期2023-11
  • 作者NANOCHAP
  • 移植自ENS_EMSsine_TEST