女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于瑞薩RA6M5的信號(hào)處理工具集設(shè)計(jì)

瑞薩MCU小百科 ? 來源:瑞薩MCU小百科 ? 作者:瑞薩MCU小百科 ? 2023-10-30 16:04 ? 次閱讀

七、重定向標(biāo)準(zhǔn)輸入輸出

以上實(shí)現(xiàn)了串口驅(qū)動(dòng),我們現(xiàn)在來實(shí)現(xiàn)串口重定向標(biāo)準(zhǔn)輸入輸出以方便后面的調(diào)試,處于資源和效率考慮,我們這里移植小型的xprintf而不是使用printf。添加xprintf.c xprintf.h到工程src下xprintf.h中使能以下宏

左右滑動(dòng)查看完整內(nèi)容

#define XF_USE_OUTPUT        1        /* 1: Enable output functions */
#define        XF_CRLF                        1        /* 1: Convert 
 ==> 
 in the output char */
#define        XF_USE_DUMP                1        /* 1: Enable put_dump function */
#define        XF_USE_LLI                1        /* 1: Enable long long integer in size prefix ll */
#define        XF_USE_FP                1        /* 1: Enable support for floating point in type e and f */
#define XF_DPC                        '.'        /* Decimal separator for floating point */
#define XF_USE_INPUT        1        /* 1: Enable input functions */
#define        XF_INPUT_ECHO        1        /* 1: Echo back input chars in xgets function */
hal_entry.c中
#include "xprintf.h"

設(shè)置收發(fā)接口

左右滑動(dòng)查看完整內(nèi)容

void xprintf_output(int ch)
{
        uint8_t val = (uint8_t)ch;
        drv_uart_write(&val,1);
}




int xprintf_input(void)
{
        uint8_t val;
        while(drv_uart_read(&val,1) <= 0);
        return (int)val;
}




          xdev_out(xprintf_output);
          xdev_in(xprintf_input);

測(cè)試

左右滑動(dòng)查看完整內(nèi)容

                     xprintf("%d
", 1234);             /* "1234" */
                        xprintf("%6d,%3d%%
", -200, 5);   /* "  -200,  5%" */
                        xprintf("%-6u
", 100);            /* "100   " */
                        xprintf("%ld
", 12345678);        /* "12345678" */
                        xprintf("%llu
", 0x100000000);    /* "4294967296"    */
                        xprintf("%lld
", -1LL);           /* "-1"            */
                        xprintf("%04x
", 0xA3);           /* "00a3" */
                        xprintf("%08lX
", 0x123ABC);      /* "00123ABC" */
                        xprintf("%016b
", 0x550F);        /* "0101010100001111" */
                        xprintf("%*d
", 6, 100);          /* "   100" */
                        xprintf("%s
", "abcdefg");        /* "abcdefg" */
                        xprintf("%5s
", "abc");           /* "  abc" */
                        xprintf("%-5s
", "abc");          /* "abc  " */
                        xprintf("%.5s
", "abcdefg");      /* "abcde" */
                        xprintf("%-5.2s
", "abcdefg");    /* "ab   " */
                        xprintf("%c
", 'a');              /* "a" */
                        xprintf("%12f
", 10.0);           /* "   10.000000"  */
                        xprintf("%.4E
", 123.45678);      /* "1.2346E+02"    */
                        for(;;)
                        {
                                char buffer[64];
                                char* p = buffer;
                                long a;
                                long b;
                                long c;
                                xprintf("please input int a and int b
");
                                xgets(buffer,sizeof(buffer));
                                xatoi(&p,&a);
                                xatoi(&p,&b);
                                c = a + b;
                                xprintf("%d + %d = %d
",a,b,c);
                        }

輸入1空格2回車打印1 + 2 = 3

a59cb6e8-76f8-11ee-939d-92fbcf53809c.png

八、命令行實(shí)現(xiàn)

以上實(shí)現(xiàn)了串口重定向,我們現(xiàn)在實(shí)現(xiàn)簡單的命令行,以便后面進(jìn)行交互操作。設(shè)計(jì)思想是,定義命令字符串和實(shí)現(xiàn)函數(shù)的對(duì)應(yīng)表,標(biāo)準(zhǔn)輸入讀一行,搜索對(duì)應(yīng)表和字符串匹配,匹配則執(zhí)行對(duì)應(yīng)的函數(shù)。

a5aa3dea-76f8-11ee-939d-92fbcf53809c.png

實(shí)現(xiàn)代碼見shell.c shell.h shell_func.c shell_func.h測(cè)試輸入help回車打印如下:

a5b988a4-76f8-11ee-939d-92fbcf53809c.png

九.ADC采集音頻

使用如下麥克風(fēng)采集模塊ADC采集信號(hào)

a5c7c6c6-76f8-11ee-939d-92fbcf53809c.png

參考電壓為3.3V

a5eadb98-76f8-11ee-939d-92fbcf53809c.png

配置ADC配置P001為ADC的CH1

a5ef36de-76f8-11ee-939d-92fbcf53809c.png

添加相關(guān)代碼

a6024f30-76f8-11ee-939d-92fbcf53809c.png

配置屬性

a615b78c-76f8-11ee-939d-92fbcf53809c.png

a626be92-76f8-11ee-939d-92fbcf53809c.png

a63703d8-76f8-11ee-939d-92fbcf53809c.png

生成工程 a649237e-76f8-11ee-939d-92fbcf53809c.png ? 添加adc.c和adc.h代碼測(cè)試

#include"adc.h"

初始化

左右滑動(dòng)查看完整內(nèi)容

adc_init();
staticuint16_tadcbuffer[1024]={0};

循環(huán)調(diào)用

左右滑動(dòng)查看完整內(nèi)容

adc_read(adcbuffer, 1024);
for(uint32_ti=0;i<1024;?i++)??
???????????{???????????xprintf("/*%d*/
",adcbuffer);??
???????????}

a653fdbc-76f8-11ee-939d-92fbcf53809c.png

也可以添加命令行采集Shell_func.h中

void ADCFun(void* param);

Shell_func.c中

左右滑動(dòng)查看完整內(nèi)容

#include "adc.h"
  { (const uint8_t*)"adc",         ADCFun,         "adc"},                    /*ADC采集*/

十、ADC可視化(虛擬示波器)

通過串口將采集的數(shù)據(jù)發(fā)送到PC,PC端使用可視化上位機(jī)進(jìn)行可視化,即實(shí)現(xiàn)了虛擬示波器的應(yīng)用。

a65d5358-76f8-11ee-939d-92fbcf53809c.png

a680c004-76f8-11ee-939d-92fbcf53809c.png

十一、DSP算法

添加DSP算法庫使用的是CMSIS-DSP的算法庫

a697e43c-76f8-11ee-939d-92fbcf53809c.png

添加的代碼如下

a6b80b86-76f8-11ee-939d-92fbcf53809c.png

十二、FFT諧波分析(電能質(zhì)量分析)

12.1FFT算法

我們可以使用fft算法對(duì)原始數(shù)據(jù)盡心分析,得到諧波,直流量,相位,頻率,幅值等信息,以進(jìn)行電能質(zhì)量分析,噪聲分析等各種應(yīng)用。

12.2添加命令行

添加命令行參數(shù)Shell_func.h中

void FftFun(void* param);

Shell_func.c中

左右滑動(dòng)查看完整內(nèi)容

#include "fft.h"
{(constuint8_t*)"ft",FftFun,"fft"},/*fft分析*/


void FftFun(void* param)
{
        int num;
        if(1 == sscanf(param,"%*s %d",&num))
  {
                while(num--)
    {
                        fft_test();
                }
        }
}

12.3代碼

Fft.c fft.h見git

12.4測(cè)試

上位機(jī)輸入fft 10即進(jìn)行10次采樣分析效果如下

a6c58de2-76f8-11ee-939d-92fbcf53809c.png

十三、噪聲檢測(cè)與分析

我們也可以將開發(fā)板打造為噪聲監(jiān)測(cè)分析儀,對(duì)于噪聲首先關(guān)心的就是其大小,我們可以實(shí)時(shí)采集聲音并通過算法檢測(cè)出極大值,最終換算成相對(duì)基準(zhǔn)功率的噪聲分貝值。同時(shí)也可以通過命令行控制何時(shí)進(jìn)行采樣分析,和其他功能是獨(dú)立的,可以單獨(dú)調(diào)用,集成在一起作為工具集供調(diào)用。當(dāng)然也可以進(jìn)行噪聲的諧波等分析,和前面的點(diǎn)那個(gè)質(zhì)量諧波分析等一樣。

13.1 極大值檢測(cè)算法
極大值檢測(cè)算法參見:

https://www.mdpi.com/1999-4893/5/4/588/htm

13.2 添加命令行

添加命令行參數(shù)Shell_func.h中

void MaxFun(void* param);

Shell_func.c中

左右滑動(dòng)查看完整內(nèi)容

#include "max.h"
  { (const uint8_t*)"max",         MaxFun,         "max"},                    /*極值檢測(cè)*/


void MaxFun(void* param)
{
        int num;
        if(1 == sscanf(param,"%*s %d",&num))
  {
                while(num--)
    {
                        max_test();
                }
        }
}


13.3 代碼

Max.c max.h詳見git

13.4 測(cè)試

上位機(jī)輸入max 10即進(jìn)行10次采樣分析可視化顯示如下,黃色線是極大值檢測(cè)結(jié)果,藍(lán)色線是原始數(shù)據(jù)。

a6de7528-76f8-11ee-939d-92fbcf53809c.png

十四、數(shù)字濾波器

14.1 IIR濾波器

DSP算法庫中提供了很多濾波算法,我們這里將IIR添加到我們的工具集中進(jìn)行演示。


14.2 添加命令行

添加命令行參數(shù)Shell_func.h中

voidIirFun(void*param);

Shell_func.c中

左右滑動(dòng)查看完整內(nèi)容

#include "iir.h"
  { (const uint8_t*)"iir",         IirFun,         "iir"},                    /*濾波分析*/




void IirFun(void* param)
{
        int num;
        if(1 == sscanf(param,"%*s %d",&num))
  {
                while(num--)
    {
                        iir_test();
                }
        }
}

14.3代碼

Iir.c iir.h詳見git

14.4測(cè)試

上位機(jī)輸入iir 10即進(jìn)行10次采樣分析可視化顯示如下,黃色線濾波結(jié)果,藍(lán)色線是原始數(shù)據(jù)。

a6f34890-76f8-11ee-939d-92fbcf53809c.png

十五、相位頻率幅值分析(頻率計(jì)等)

15.1相位分析

FFT計(jì)算結(jié)果,幅值最大的橫坐標(biāo)對(duì)應(yīng)信號(hào)頻率,縱坐標(biāo)對(duì)應(yīng)幅度。幅值最大的為out[m]=val;則信號(hào)頻率f0=(Fs/N)m ,信號(hào)幅值Vpp=val/(N/2)。N為FFT的點(diǎn)數(shù),F(xiàn)s為采樣頻率。相位Pha=atan2(a, b)弧度制,其中ab是輸出虛數(shù)結(jié)果的實(shí)部和虛部。

15.2添加命令行

添加命令行參數(shù)Shell_func.h中

VoidFrqFun(void*param);

Shell_func.c中

左右滑動(dòng)查看完整內(nèi)容

#include "frq.h"
  { (const uint8_t*)"frq",         FrqFun,         "frq"},                    /*相位分析*/




void FrqFun(void* param)
{
        int num;
        if(1 == sscanf(param,"%*s %d",&num))
  {
                while(num--)
    {
                        Frq_test();
                }
        }
}


15.3 代碼

Frq.c frq.h詳見git

15.4 測(cè)試

上位機(jī)輸入frq 10即進(jìn)行10次采樣分析

a708a186-76f8-11ee-939d-92fbcf53809c.jpg

十六、總結(jié)

本開發(fā)板性能資源比較豐富,特別適合開發(fā)和驗(yàn)證等。本文基于該開發(fā)板實(shí)現(xiàn)了信號(hào)處理前端,實(shí)現(xiàn)了虛擬示波器、噪聲分析儀、電能質(zhì)量分析儀、數(shù)字濾波器等功能的集合,并且可以方便的快速添加更多的應(yīng)用。可以基于CLI調(diào)用方便腳本化使用,可以使用上位機(jī)可視化,是一個(gè)瑞士軍刀類型的工具集。目前支持的CLI命令如下,可以快速擴(kuò)展更多應(yīng)用。

a720054c-76f8-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 信號(hào)處理
    +關(guān)注

    關(guān)注

    48

    文章

    1055

    瀏覽量

    103912
  • 瑞薩
    +關(guān)注

    關(guān)注

    36

    文章

    22370

    瀏覽量

    87734
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    394

    瀏覽量

    28578
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1584

    瀏覽量

    78646
  • RA6M5
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    454

原文標(biāo)題:【瑞薩RA MCU創(chuàng)意氛圍賽作品賞析】項(xiàng)目11——基于瑞薩RA6M5的信號(hào)處理工具集(下)

文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于RA6M5/RA2L1和百度語音云的語音識(shí)別控制與無線通信控制系統(tǒng)

    整個(gè)系統(tǒng)由兩個(gè)野火啟明開發(fā)板組成,大的RA6M5開發(fā)板接入W5500網(wǎng)口模塊.
    的頭像 發(fā)表于 02-26 13:54 ?2091次閱讀
    基于<b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA6M5</b>/<b class='flag-5'>RA</b>2L1和百度語音云的語音識(shí)別控制與無線通信控制系統(tǒng)

    基于RA6M5的智能煙霧感應(yīng)吸除系統(tǒng)設(shè)計(jì)

    今日分享野火創(chuàng)意氛圍賽選手的作品——基于RA6M5的智能煙霧感應(yīng)吸除系統(tǒng)。
    的頭像 發(fā)表于 11-06 12:21 ?1583次閱讀
    基于<b class='flag-5'>RA6M5</b>的智能煙霧感應(yīng)吸除系統(tǒng)設(shè)計(jì)

    RA6M5中的QSPI可以用作普通SPI使用嗎?

    各位大佬,請(qǐng)教一個(gè)問題,RA6M5中的QSPI可以用作普通SPI使用嗎?有沒有相關(guān)教程
    發(fā)表于 12-18 08:53

    【野火啟明6M5開發(fā)板體驗(yàn)】1 RA6M5開發(fā)環(huán)境搭建

    開發(fā)環(huán)境:IDE:MKD 5.30開發(fā)板:野火啟明6M5開發(fā)板MCU:R7FA6M5BH3CFC電子的開發(fā)工具有很多,筆者習(xí)慣使用MDK
    發(fā)表于 12-21 22:49

    RAMCU創(chuàng)意氛圍賽】基于RA6M5的電子墨水屏微信信息站

    RAMCU創(chuàng)意氛圍賽】基于RA6M5的電子墨水屏微信信息站大信(QQ:8125036)一、創(chuàng)意方案簡介 手機(jī)微信是我們?nèi)粘I钪惺褂迷絹碓蕉嗟耐ㄐ?b class='flag-5'>工具之一,手機(jī)微信在給我們帶來
    發(fā)表于 08-28 04:06

    電子發(fā)布了一款RA6M5群微控制器MCU的相關(guān)特性詳解

    全新MCU產(chǎn)品群為IoT應(yīng)用帶來多種通信功能選項(xiàng)、靈活的內(nèi)存架構(gòu)和強(qiáng)大的安全性,成為現(xiàn)場(chǎng)固件更新應(yīng)用的理想之選電子集團(tuán)今日宣布,新增20款RA6M5群微控制器(MCU),擴(kuò)展RA6
    的頭像 發(fā)表于 04-06 16:24 ?2968次閱讀

    RA6M5數(shù)據(jù)手冊(cè)(英)

    RA6M5數(shù)據(jù)手冊(cè)(英)
    發(fā)表于 11-07 19:49 ?1次下載
    <b class='flag-5'>RA6M5</b>數(shù)據(jù)手冊(cè)(英)

    RA6M5硬件用戶手冊(cè)(英)

    RA6M5硬件用戶手冊(cè)(英)
    發(fā)表于 11-07 19:49 ?2次下載
    <b class='flag-5'>RA6M5</b>硬件用戶手冊(cè)(英)

    RA6M5數(shù)據(jù)手冊(cè)(中英)

    RA6M5數(shù)據(jù)手冊(cè)(中英)
    發(fā)表于 11-07 19:49 ?0次下載
    <b class='flag-5'>RA6M5</b>數(shù)據(jù)手冊(cè)(中英)

    RA6M5硬件用戶手冊(cè)(中英)

    RA6M5硬件用戶手冊(cè)(中英)
    發(fā)表于 11-07 19:50 ?2次下載
    <b class='flag-5'>RA6M5</b>硬件用戶手冊(cè)(中英)

    RA6M5 組 數(shù)據(jù)表

    RA6M5 組 數(shù)據(jù)表
    發(fā)表于 01-09 19:01 ?1次下載
    <b class='flag-5'>RA6M5</b> 組 數(shù)據(jù)表

    RA6M5 組 用戶手冊(cè): 硬件

    RA6M5 組 用戶手冊(cè): 硬件
    發(fā)表于 01-09 19:02 ?1次下載
    <b class='flag-5'>RA6M5</b> 組 用戶手冊(cè): 硬件

    RA6系列芯片外擴(kuò)SRAM方法

    應(yīng)用。RA6其它系列擴(kuò)展外部SRAM應(yīng)用操作方法類似。 一、RA6M5外部總線外設(shè)描述 電子RA6M5產(chǎn)品群采用支持TrustZone
    的頭像 發(fā)表于 02-11 06:00 ?2177次閱讀

    RA6M5 組 數(shù)據(jù)表

    RA6M5 組 數(shù)據(jù)表
    發(fā)表于 06-30 18:41 ?0次下載
    <b class='flag-5'>RA6M5</b> 組 數(shù)據(jù)表

    RA6M5 組 用戶手冊(cè): 硬件

    RA6M5 組 用戶手冊(cè): 硬件
    發(fā)表于 06-30 18:42 ?13次下載
    <b class='flag-5'>RA6M5</b> 組 用戶手冊(cè): 硬件