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.

110 lines
2.7 KiB

3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. # FilterBox
  2. - [FilterBox](#filterbox)
  3. - [一.RELEASE](#一-release)
  4. - [二.AT指令说明](#二-at指令说明)
  5. - [2.1调整消抖延时](#2-1调整消抖延时)
  6. - [2.2调整输入输出是否镜像](#2-2调整输入输出是否镜像)
  7. - [2.3保存配置到FLASH中](#2-3保存配置到flash中)
  8. - [三.当前程序不足的地方](#三-当前程序不足的地方)
  9. - [问题一](#问题一)
  10. - [问题二](#问题二)
  11. - [四.其他文档](#四-其他文档)
  12. ![image-20220426110424996](markdown.assets/README.assets/image-20220426110424996.png)
  13. ## 一.RELEASE
  14. ```
  15. //版本号在fucntion:app_main修改
  16. v1.1
  17. 开机点亮绿色指示灯
  18. v1.2
  19. 修复串口无法偶尔无效的bug
  20. v1.3
  21. 修改部分打印信息
  22. v1.4
  23. 当输入发生变化时指示灯闪烁。
  24. v1.5
  25. 输出信号边沿触发灯光闪烁,1s内无边沿变化,则灯光停止闪烁。
  26. ```
  27. [filterBox_stm32f103_v1.3.zip](./release/filterBox_stm32f103_v1.3.zip)
  28. ## 二.AT指令说明
  29. ### 2.1调整消抖延时
  30. **设置指令**
  31. AT+FILTER_TIME_MS=10
  32. **查询指令**
  33. AT+FILTER_TIME_MS?
  34. ### 2.2调整输入输出是否镜像
  35. **设置指令**
  36. AT+IO_MIRROR=0
  37. AT+IO_MIRROR=1
  38. **查询指令**
  39. AT+IO_MIRROR?
  40. ### 2.3保存配置到FLASH中
  41. AT+SAVE
  42. ## 三.当前程序不足的地方
  43. ### 问题一
  44. 例如下面波形,假如每个脉冲的宽度都小于1000us,那么理论上来说,我滤波时间设置1ms就能够正确滤波。但现在的代码做不到这一点。现在代码的逻辑如下,按照现在逻辑,如果时刻1检测到高电平,等待1ms后,时刻2依然可能检测到高电平。
  45. ```
  46. 1.电平发生变化,
  47. 2.等待,
  48. 3.查看电平是否发生变化
  49. ```
  50. ![image-20220426153200062](markdown.assets/README.assets/image-20220426153200062.png)
  51. 理想的代码逻辑,应该写一个简单的低通滤波器,计算的电平持续时间,如果电平持续超过1ms(用户可设置),就改变电平。且要以尽可能高的采样频率去采样电平,逻辑大致如下
  52. ```c
  53. bool lastinput = false;
  54. while (true) {
  55. //对电平进行计数
  56. bool nowinput = input();
  57. if (nowinput != lastinput) {
  58. input_state_count = 0;
  59. } else {
  60. if (input_state_count < MAX_UINT32) {
  61. input_state_count++;
  62. }
  63. }
  64. lastinput = nowinput;
  65. if (nowinput != output() && input_state_count > 用户设定值) {
  66. output = nowinput;
  67. }
  68. }
  69. ```
  70. ### 问题二
  71. ```
  72. 现在代码中用的HAL_Delay,HAL_Delay使用的是1ms的系统ticket进行的延时,所以当延时时间会存在1ms的误差。
  73. ```
  74. ## 四.其他文档
  75. [信号处理盒子测试文档.pdf](信号处理盒子测试文档.pdf)