在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于瑞薩RA6M5的信號處理工具集設計

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

七、重定向標準輸入輸出

以上實現了串口驅動,我們現在來實現串口重定向標準輸入輸出以方便后面的調試,處于資源和效率考慮,我們這里移植小型的xprintf而不是使用printf。添加xprintf.c xprintf.h到工程src下xprintf.h中使能以下宏

左右滑動查看完整內容

#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"

設置收發接口

左右滑動查看完整內容

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);

測試

左右滑動查看完整內容

                     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

八、命令行實現

以上實現了串口重定向,我們現在實現簡單的命令行,以便后面進行交互操作。設計思想是,定義命令字符串和實現函數的對應表,標準輸入讀一行,搜索對應表和字符串匹配,匹配則執行對應的函數。

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

實現代碼見shell.c shell.h shell_func.c shell_func.h測試輸入help回車打印如下:

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

九.ADC采集音頻

使用如下麥克風采集模塊ADC采集信號

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

參考電壓為3.3V

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

配置ADC配置P001為ADC的CH1

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

添加相關代碼

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代碼測試

#include"adc.h"

初始化

左右滑動查看完整內容

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

循環調用

左右滑動查看完整內容

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中

左右滑動查看完整內容

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

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

通過串口將采集的數據發送到PC,PC端使用可視化上位機進行可視化,即實現了虛擬示波器的應用。

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諧波分析(電能質量分析)

12.1FFT算法

我們可以使用fft算法對原始數據盡心分析,得到諧波,直流量,相位,頻率,幅值等信息,以進行電能質量分析,噪聲分析等各種應用。

12.2添加命令行

添加命令行參數Shell_func.h中

void FftFun(void* param);

Shell_func.c中

左右滑動查看完整內容

#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測試

上位機輸入fft 10即進行10次采樣分析效果如下

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

十三、噪聲檢測與分析

我們也可以將開發板打造為噪聲監測分析儀,對于噪聲首先關心的就是其大小,我們可以實時采集聲音并通過算法檢測出極大值,最終換算成相對基準功率的噪聲分貝值。同時也可以通過命令行控制何時進行采樣分析,和其他功能是獨立的,可以單獨調用,集成在一起作為工具集供調用。當然也可以進行噪聲的諧波等分析,和前面的點那個質量諧波分析等一樣。

13.1 極大值檢測算法
極大值檢測算法參見:

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

13.2 添加命令行

添加命令行參數Shell_func.h中

void MaxFun(void* param);

Shell_func.c中

左右滑動查看完整內容

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


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 測試

上位機輸入max 10即進行10次采樣分析可視化顯示如下,黃色線是極大值檢測結果,藍色線是原始數據。

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

十四、數字濾波器

14.1 IIR濾波器

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


14.2 添加命令行

添加命令行參數Shell_func.h中

voidIirFun(void*param);

Shell_func.c中

左右滑動查看完整內容

#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測試

上位機輸入iir 10即進行10次采樣分析可視化顯示如下,黃色線濾波結果,藍色線是原始數據。

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

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

15.1相位分析

FFT計算結果,幅值最大的橫坐標對應信號頻率,縱坐標對應幅度。幅值最大的為out[m]=val;則信號頻率f0=(Fs/N)m ,信號幅值Vpp=val/(N/2)。N為FFT的點數,Fs為采樣頻率。相位Pha=atan2(a, b)弧度制,其中ab是輸出虛數結果的實部和虛部。

15.2添加命令行

添加命令行參數Shell_func.h中

VoidFrqFun(void*param);

Shell_func.c中

左右滑動查看完整內容

#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 測試

上位機輸入frq 10即進行10次采樣分析

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

十六、總結

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

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 信號處理
    +關注

    關注

    48

    文章

    1055

    瀏覽量

    103966
  • 瑞薩
    +關注

    關注

    36

    文章

    22375

    瀏覽量

    87848
  • 移植
    +關注

    關注

    1

    文章

    395

    瀏覽量

    28610
  • 串口
    +關注

    關注

    14

    文章

    1586

    瀏覽量

    79354
  • RA6M5
    +關注

    關注

    0

    文章

    7

    瀏覽量

    465

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

文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于RA6M5/RA2L1和百度語音云的語音識別控制與無線通信控制系統

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

    基于RA6M5的智能煙霧感應吸除系統設計

    今日分享野火創意氛圍賽選手的作品——基于RA6M5的智能煙霧感應吸除系統。
    的頭像 發表于 11-06 12:21 ?1632次閱讀
    基于<b class='flag-5'>RA6M5</b>的智能煙霧感應吸除系統設計

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

    各位大佬,請教一個問題,RA6M5中的QSPI可以用作普通SPI使用嗎?有沒有相關教程
    發表于 12-18 08:53

    【野火啟明6M5開發板體驗】1 RA6M5開發環境搭建

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

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

    RAMCU創意氛圍賽】基于RA6M5的電子墨水屏微信信息站大信(QQ:8125036)一、創意方案簡介 手機微信是我們日常生活中使用越來越多的通信工具之一,手機微信在給我們帶來
    發表于 08-28 04:06

    電子發布了一款RA6M5群微控制器MCU的相關特性詳解

    全新MCU產品群為IoT應用帶來多種通信功能選項、靈活的內存架構和強大的安全性,成為現場固件更新應用的理想之選電子集團今日宣布,新增20款RA6M5群微控制器(MCU),擴展RA6
    的頭像 發表于 04-06 16:24 ?3002次閱讀

    RA6M5數據手冊(英)

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

    RA6M5硬件用戶手冊(英)

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

    RA6M5數據手冊(中英)

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

    RA6M5硬件用戶手冊(中英)

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

    RA6M5 組 數據表

    RA6M5 組 數據表
    發表于 01-09 19:01 ?1次下載
    <b class='flag-5'>RA6M5</b> 組 數據表

    RA6M5 組 用戶手冊: 硬件

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

    RA6系列芯片外擴SRAM方法

    應用。RA6其它系列擴展外部SRAM應用操作方法類似。 一、RA6M5外部總線外設描述 電子RA6M5產品群采用支持TrustZone
    的頭像 發表于 02-11 06:00 ?2227次閱讀

    RA6M5 組 數據表

    RA6M5 組 數據表
    發表于 06-30 18:41 ?0次下載
    <b class='flag-5'>RA6M5</b> 組 數據表

    RA6M5 組 用戶手冊: 硬件

    RA6M5 組 用戶手冊: 硬件
    發表于 06-30 18:42 ?13次下載
    <b class='flag-5'>RA6M5</b> 組 用戶手冊: 硬件
    主站蜘蛛池模板: 日本免费在线视频 | 九九re热| 精品免费久久久久久成人影院 | 高清色黄毛片一级毛片 | 国产三级在线视频观看 | 不卡午夜 | 国产国语videosex另类 | 日本亚洲精品成人 | 天天摸天天干 | 国产va精品免费观看 | 女人张腿让男桶免费视频网站 | 亚洲欧美视频在线观看 | 天天爱天天插 | 天堂中文在线免费观看 | 午夜精品久久久久久91 | 一级特黄特色的免费大片视频 | 狠狠噜噜 | 男人的天堂免费视频 | 色噜噜狠狠成人网 | 在线不卡一区 | 激情com | 色中色官网 | 操欧美女人 | sese国产| 午夜精品久久久久久 | 777奇米影视笫四色88me久久综合 | 国产免费久久精品99 | 最新合集丨新片速递 | 国产精品漂亮美女在线观看 | 日本在线播放一区 | 视频精品一区二区三区 | 护士一级aaaaaa毛片 | 一卡二卡三卡四卡无卡在线 | 狼人射综合| 新版天堂中文资源官网 | 亚洲第一区第二区 | 99香蕉国产| 四虎影院网| 午夜视频免费在线观看 | 曰本性l交片视频视频 | 天天射夜夜操 |