在电力等行业,分析电压极值,是一项重要的参数分析,可以分析电压的波动;示波器中也有自动测量极值的功能更。
基于本板设计了信号处理前端也实现了该功能。
算法来源于论文https://www.mdpi.com/1999-4893/5/4/588/htm
核心代码如下
void ampd (int32_t* data, int32_t len)
{
int row_sum;
for (int k=1; k< len/2+1; k++)
{
row_sum = 0;
for (int i=k; i< len-k; i++)
{
if ((data[i] > data[i - k]) && (data[i] > data[i + k]))
{
row_sum -= 1;
}
}
arr_rowsum[k-1] = row_sum;
}
int min_index = argmin(arr_rowsum,len/2+1);
max_window_length = min_index;
for (int k=1; k< max_window_length + 1; k++)
{
for (int i=k; i< len - k; i++)
{
if ((data[i] > data[i - k]) && (data[i] > data[i + k]))
{
p_data[i] += 1;
}
}
}
for (int k=0; k< len; k++)
{
if (p_data[k] == max_window_length)
{
/* 极大值 */
}
}
}
测试
添加命令行
{ (const uint8_t*)"max", MaxFun, "max"}, /*打印帮助信息*/
void MaxFun ( void * param)
{
max_test();
}
void MaxFun ( void * param);
测试代码如下,串口命令行输入命令max,开始采集ADC值,并计算极值,打印到PC串口通过seraistudio可视化显示
int max_test(void)
{
for(int i=0; i< 10; i++)
{
memset(p_data,0,sizeof(p_data));
//adc_samp(sim_data_buffer,1000);
sim_data();
ampd(sim_data_buffer, sizeof(sim_data_buffer)/sizeof(sim_data_buffer[0]));
for(int k=0; k< sizeof(sim_data_buffer)/sizeof(sim_data_buffer[0]); k++)
{
if(p_data[k] == max_window_length)
{
/* 极大值 */
printf("/*%ld,%ld*/\\r\\n",sim_data_buffer[k],sim_data_buffer[k]);
}
else
{
printf("/*%ld,%d*/\\r\\n",sim_data_buffer[k],0);
}
cyhal_system_delay_ms(10);
}
}
return 0;
}
效果如下,IN是原始数据,MAX是检测到的极大值,如果检测极小值将原始数据取反即可。
检测语音,效果如下
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
英飞凌
+关注
关注
65文章
1903浏览量
136912 -
PSoC
+关注
关注
12文章
167浏览量
91114 -
信号处理
+关注
关注
47文章
854浏览量
102532 -
信号
+关注
关注
11文章
2639浏览量
75388 -
开发板
+关注
关注
25文章
4429浏览量
93993 -
RTT
+关注
关注
0文章
63浏览量
16882
发布评论请先 登录
相关推荐
【新品发布】英飞凌PSoC 6 RTT物联网开发板内容详解
4月12日,英飞凌联合 RT-Thread 发布PSoC™ 62 with CAPSENSE™ evaluation kit开发板 (以下简称PSoC
发表于 04-13 13:46
【资料下载】英飞凌PSoC 6 RTT物联网开发板
Infineon Psoc6-evaluationkit-062S2 说明开发板免费试用活动:https://bbs.elecfans.com/jishu_2349212_1_1.html简介本文
发表于 04-13 13:38
【新品试用】英飞凌PSoC 6 RTT开发板试用活动
概述、软件调试、硬件接入、视频演示,不少于500字+2张图片。
2)报告形式:标题格式 【评测活动标题+自拟标题】示例: 【英飞凌PSoC 6 RTT
发表于 04-13 15:26
【英飞凌PSoC 6 RTT开发板试用】
单周期乘法和MPU,可以充分发挥 PSoC6 双核芯片性能。
该开发板核心 板载资源 如下:
MCU:CY8C624ABZI-S2D44,Cortex-M4主频 150MHz,Cortex-M0主频
发表于 05-30 20:47
【英飞凌PSoC 6 RTT开发板试用】以搭积木方式实现简单的互联型家庭网关
本文基于RT-Studio,采用搭积木的方式实现一个简单的互联型家庭网关,采集各类传感器数据并传输至云端。硬件除了Psoc6-evaluationkit-062S2开发板之外,还有一块RW007
发表于 05-31 22:19
英飞凌联合 RT-Thread 发布 PSoC™ 62 with CAPSENSE ™ evaluation kit开发板
近日,RT-Thread 社区团队打造了新品开发板:英飞凌联合 RT-Thread 发布 PSoC 62 with CAPSENSE evaluation kit开发板 (以下简称
【英飞凌PSoC 6 RTT开发板试用】信号处理前端之谐波分析
3.1 电能质量,谐波分析 添加命令行 在电能检测应用中,电能质量一项分析即谐波分析,谐波分量大,说明电能质量不好, 基于本板信号处理前端也实现了该功能。 shell_fun.h中 v
英飞凌开发板模块评测任务大挑战-SPI驱动测试
使用PSoC™ 62 with CAPSENSE™ evaluation kit开发板适配的RTT SPI驱动,做显示测试。
发表于 08-10 15:44
•466次阅读
玩转PSoC 6 RTT积木式开发套件,实现毫米波雷达等实用功能
本期英飞凌手工课,将由来自英飞凌的工程师Jenson给大家带来PSoC62withCAPSENSEevaluationkit(下称PSoC6RTT开
评论