You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
zhaohe 909d741c4c update 3 years ago
.vscode v1.4 3 years ago
Core v1.1开机点亮指示灯 4 years ago
Drivers initial project 4 years ago
MDK-ARM v1.5 3 years ago
dep v1.0 4 years ago
markdown.assets/README.assets update 3 years ago
release v1.5 3 years ago
src v1.5 3 years ago
.clang-format initial project 4 years ago
.gitignore v1.4 3 years ago
.gitmodules update submodule 4 years ago
.mxproject v1.1开机点亮指示灯 4 years ago
24转5触发盒使用说明Rev3.docx update 3 years ago
FilterBox.ioc v1.1开机点亮指示灯 4 years ago
README.md v1.5 3 years ago
信号处理盒子测试文档.docx update 3 years ago
信号处理盒子测试文档.pdf update 3 years ago

README.md

FilterBox

image-20220426110424996

一.RELEASE

    //版本号在fucntion:app_main修改
    v1.1
        开机点亮绿色指示灯
    v1.2
        修复串口无法偶尔无效的bug
    v1.3
        修改部分打印信息
    v1.4
        当输入发生变化时指示灯闪烁。
    v1.5
        输出信号边沿触发灯光闪烁,1s内无边沿变化,则灯光停止闪烁。

filterBox_stm32f103_v1.3.zip

二.AT指令说明

2.1调整消抖延时

设置指令

AT+FILTER_TIME_MS=10

查询指令

AT+FILTER_TIME_MS?

2.2调整输入输出是否镜像

设置指令

AT+IO_MIRROR=0
AT+IO_MIRROR=1

查询指令

AT+IO_MIRROR?

2.3保存配置到FLASH中

AT+SAVE

三.当前程序不足的地方

问题一

例如下面波形,假如每个脉冲的宽度都小于1000us,那么理论上来说,我滤波时间设置1ms就能够正确滤波。但现在的代码做不到这一点。现在代码的逻辑如下,按照现在逻辑,如果时刻1检测到高电平,等待1ms后,时刻2依然可能检测到高电平。

 					1.电平发生变化,
        			2.等待,
        			3.查看电平是否发生变化

image-20220426153200062

理想的代码逻辑,应该写一个简单的低通滤波器,计算的电平持续时间,如果电平持续超过1ms(用户可设置),就改变电平。且要以尽可能高的采样频率去采样电平,逻辑大致如下


bool lastinput = false;
while (true) {
  //对电平进行计数
  bool nowinput = input();

  if (nowinput != lastinput) {
    input_state_count = 0;
  } else {
    if (input_state_count < MAX_UINT32) {
      input_state_count++;
    }
  }
  lastinput = nowinput;

  if (nowinput != output() && input_state_count > 用户设定值) {
    output = nowinput;
  }
}

问题二

现在代码中用的HAL_Delay,HAL_Delay使用的是1ms的系统ticket进行的延时,所以当延时时间会存在1ms的误差。

四.其他文档

信号处理盒子测试文档.pdf