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.

101 lines
2.3 KiB

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