[RISC-V MCU 应用开发] 一阶RC低通滤波器

[复制链接]
 楼主| juliestephen 发表于 2023-4-22 23:38 | 显示全部楼层 |阅读模式
low_filter.h
  1. typedef struct
  2. {
  3.      int16_t  Input;
  4.      int16_t  Output[2];
  5.      int32_t  FilterTf;
  6.      int32_t  FilterTs;
  7.      int32_t  Kr;
  8.      int32_t  Ky;
  9. } low_filter;
  10. void low_filter_init(low_filter *v);
  11. int16_t low_filter_calc(low_filter *v);
low_filter.c
  1. void low_filter_init(low_filter *v){
  2.      v->Kr = v->FilterTs*1024/(v->FilterTs + v->FilterTf);
  3.      v->Ky = v->FilterTf*1024/(v->FilterTs + v->FilterTf);
  4. }
  5. int16_t low_filter_calc(low_filter *v){
  6.         int32_t tmp = 0;
  7.         tmp = ((int32_t)v->Kr*v->Input + v->Ky*v->Output[1])/1024;
  8.         if(tmp>32767){
  9.                 tmp = 32767;
  10.         }
  11.         if( tmp < -32768){
  12.                 tmp = -32768;
  13.         }
  14.     v->Output[0] = (int16_t)tmp;
  15.     v->Output[1] = v->Output[0];
  16.         return v->Output[0];
  17. }



您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

1499

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

32

主题

1499

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部