找回密码
 立即注册
楼主: 梁工

FFT频谱分析-视频讲解, USB-CDC虚拟串口送电脑显示

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2023-12-25 18:08:58 | 显示全部楼层
qizhi*** 发表于 2023-12-25 16:33
感觉很神奇,很漂亮。比第一版好多了

谢谢认可!我们一直在努力进步!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:413
  • 最近打卡:2025-05-01 08:31:52

5

主题

296

回帖

2030

积分

金牌会员

积分
2030
发表于 2023-12-27 12:38:19 | 显示全部楼层
好厉害,一直想学可惜苦于没有教程,感谢感谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:522
  • 最近打卡:2025-05-01 06:03:55
已绑定手机

34

主题

459

回帖

2215

积分

金牌会员

积分
2215
发表于 2024-1-10 19:36:18 | 显示全部楼层
漂亮
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:522
  • 最近打卡:2025-05-01 06:03:55
已绑定手机

34

主题

459

回帖

2215

积分

金牌会员

积分
2215
发表于 2024-1-10 19:36:24 | 显示全部楼层
漂亮
回复

使用道具 举报 送花

0

主题

1

回帖

31

积分

新手上路

积分
31
发表于 2024-4-10 08:54:08 | 显示全部楼层
//采样存储序列表(倒序)        FFT 256点反序十进制:
const unsigned char  LIST_TAB[256] = {
   0, 128,  64, 192,  32, 160,  96, 224,  16, 144,  80, 208,  48, 176, 112, 240,
   8, 136,  72, 200,  40, 168, 104, 232,  24, 152,  88, 216,  56, 184, 120, 248,
   4, 132,  68, 196,  36, 164, 100, 228,  20, 148,  84, 212,  52, 180, 116, 244,
  12, 140,  76, 204,  44, 172, 108, 236,  28, 156,  92, 220,  60, 188, 124, 252,
   2, 130,  66, 194,  34, 162,  98, 226,  18, 146,  82, 210,  50, 178, 114, 242,
  10, 138,  74, 202,  42, 170, 106, 234,  26, 154,  90, 218,  58, 186, 122, 250,
   6, 134,  70, 198,  38, 166, 102, 230,  22, 150,  86, 214,  54, 182, 118, 246,
  14, 142,  78, 206,  46, 174, 110, 238,  30, 158,  94, 222,  62, 190, 126, 254,
   1, 129,  65, 193,  33, 161,  97, 225,  17, 145,  81, 209,  49, 177, 113, 241,
   9, 137,  73, 201,  41, 169, 105, 233,  25, 153,  89, 217,  57, 185, 121, 249,
   5, 133,  69, 197,  37, 165, 101, 229,  21, 149,  85, 213,  53, 181, 117, 245,
  13, 141,  77, 205,  45, 173, 109, 237,  29, 157,  93, 221,  61, 189, 125, 253,
   3, 131,  67, 195,  35, 163,  99, 227,  19, 147,  83, 211,  51, 179, 115, 243,
  11, 139,  75, 203,  43, 171, 107, 235,  27, 155,  91, 219,  59, 187, 123, 251,
   7, 135,  71, 199,  39, 167, 103, 231,  23, 151,  87, 215,  55, 183, 119, 247,
  15, 143,  79, 207,  47, 175, 111, 239,  31, 159,  95, 223,  63, 191, 127, 255
};

梁专家,您好,这里我想改为32点的怎么改???
谢谢

点评

这是某个早期版本,并不能保证其是正常的,我基本不用点数少的FFT。 //计算余弦用的表,放大了127倍(32点FFT时用) int code COS_TABLE[LENGTH/2]= { 127,125,117,106,90,71,49,25,0,-25,-49,-71,-90,-106,-117,-125  详情 回复 发表于 2024-4-10 09:50
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-4-10 09:50:25 | 显示全部楼层
86081*** 发表于 2024-4-10 08:54
//采样存储序列表(倒序)        FFT 256点反序十进制:
const unsigned char  LIST_TAB[256] = {
   0, 128,  64, 1 ...

这是某个早期版本,并不能保证其是正常的,我基本不用点数少的FFT。

//计算余弦用的表,放大了127倍(32点FFT时用)
int code COS_TABLE[LENGTH/2]=
{
127,125,117,106,90,71,49,25,0,-25,-49,-71,-90,-106,-117,-125
};

//计算正弦用的表,放大了127倍(32点FFT时用)
int code SIN_TABLE[LENGTH/2]=
{
0,25,49,71,90,106,117,125,127,125,117,106,90,71,49,25
};


//采样存储序列表(倒序)        FFT 32点反序十进制:
u8 code LIST_TAB[LENGTH] = {
   0,  16,   8,  24,   4,  20,  12,  28,   2,  18,  10,  26,   6,  22,  14,  30,
   1,  17,   9,  25,   5,  21,  13,  29,   3,  19,  11,  27,   7,  23,  15,  31,
};


/********************************************************************
函数功能:进行FFT运算。
入口参数:pIn:输入数据的缓冲区;
          pRe:保存实部的缓冲区;
                  pIm:保存虚部的缓冲区。
返    回:无。
备    注:在调用该函数之前应该调用FftInput函数对数据进行倒序处理。
********************************************************************/

void FftExe(int *pIn, int *pRe, int *pIm)
{
        u8        i,j;
        u8        BlockSize;        //64点的可以使用8位变量, 最大值是128
        int        tr,ti;
        u8        OffSet1,OffSet2;
        long        c,s;                //必须是long型, 否则溢出

        //先计算2点的
        for(j=0; j<LENGTH; j+=2)
        {
                tr       = pIn[j+1];
                pRe[j+1] = (pIn[j] - tr);
                pIm[j+1] = 0;
                pRe[j]   = (pIn[j] + tr);
                pIm[j]   = 0;
        }

        for(BlockSize=4; BlockSize<=LENGTH; BlockSize<<=1) //再一层层计算
        {
                for(j=0; j<LENGTH; j+=BlockSize)
                {
                        for(i=0; i<BlockSize/2; i++)
                        {
                                OffSet1 = LENGTH/BlockSize * i;
                                c = (long)COS_TABLE[OffSet1];
                                s = (long)SIN_TABLE[OffSet1];

                                OffSet1 = i + j;
                                OffSet2 = OffSet1 + BlockSize/2;
                                tr = (c*pRe[OffSet2] + s*pIm[OffSet2]) >> 7;
                                ti = (c*pIm[OffSet2] - s*pRe[OffSet2]) >> 7;

                                pRe[OffSet2] = (pRe[OffSet1] - tr) >> 1;        //对结果归一化处理,则每次运算要除以2
                                pIm[OffSet2] = (pIm[OffSet1] - ti) >> 1;
                                pRe[OffSet1] = (pRe[OffSet1] + tr) >> 1;
                                pIm[OffSet1] = (pIm[OffSet1] + ti) >> 1;
                        }
                }
        }
        pRe[0] = pRe[0] >> 1;
        pIm[0] = pIm[0] >> 1;
}

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:374
  • 最近打卡:2025-04-29 08:33:10

16

主题

137

回帖

978

积分

高级会员

积分
978
发表于 2024-7-11 08:41:20 | 显示全部楼层
强!!做深了,都得靠数学啊!

点评

是啊,哪怕简单的东西,比如有源滤波、数字滤波,都是数学。 记得网上有人建议小学生不要学数学和英语,呵呵!  详情 回复 发表于 2024-7-11 09:16
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-7-11 09:16:45 | 显示全部楼层
purs*** 发表于 2024-7-11 08:41
强!!做深了,都得靠数学啊!

是啊,哪怕简单的东西,比如有源滤波、数字滤波,都是数学。
记得网上有人建议小学生不要学数学和英语,呵呵!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-11 17:06:21

0

主题

3

回帖

16

积分

新手上路

积分
16
发表于 2024-8-11 17:05:55 | 显示全部楼层
也是深有感触:到最后还是要靠数学!
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 19:37 , Processed in 0.169877 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表