- 2025-02-20
-
回复了主题帖:
【microchip PolarFire SoC FPGA 套件】①热气腾腾的开箱
学学学学学学学 发表于 2025-2-19 16:05
颜值很高
是的,做工很精细!
- 2025-02-12
-
发表了主题帖:
【microchip PolarFire SoC FPGA 套件】①热气腾腾的开箱
本帖最后由 cc1989summer 于 2025-2-12 23:15 编辑
感谢EEWORLD及Digikey给我提供的这次microchip PolarFire SoC FPGA 套件测评及学习机会。
说起FPGA,大家更多的是接触Altera(被Intel收购)及Xilinx(被AMD收购)这两家,顶多再加一家Lattice。
microchip的FPGA在国内似乎比较小众,了解了下历史,原来是由一些列收购而来的。
Actel——>Microsemi——>microchip,而且一直主要偏向于军用和宇航。
Actel是美国军方的合作伙伴,占据了美国90%以上航天航空的FPGA市场,在过去的十多年中,Actel反熔丝的FPGA已经成功地应用于 300多个太空计划。
直到2002年,其创新的基于Flash架构的FPGA的出现,从此揭开了Actel神秘的面纱,从此Actel逐渐走向了民用市场,被大家所认知。
Microchip的三个主要FPGA系列:
IGLOO®2 FPGA:具有大量资源的低密度器件。
SmartFusion®2 SoC FPGA:具有大量资源和32位硬处理器内核的低密度器件。
PolarFire™ FPGA 和 SoC FPGA:成本经过优化的高性能器件,并采用28纳米 (nm) 工艺技术实现。
本次测评的就是PolarFire™ SoC FPGA。
从名字中可知,集成了SoC(RISC V)和FPGA。
从架构图中可以看出,该FPGA集成了5核RISC-V SoC(625 MHz)和FPGA核心(93K LE逻辑单元),1LE=4LUT + DFF,性能非常强劲。
FPGA核部分的资源。
SoC核部分的资源
具体到板子,集成了丰富的硬件。包括1GB RAM,1000M以太网,SD卡等。
自带了JTAG调试工具。支持Bare-metal(裸机编程),RTOS以及Linux。
下面是开箱的内容,后面再慢慢学习应用开发。
本次分享就到这里。
- 2025-02-06
-
回复了主题帖:
测评入围名单: PolarFire SoC FPGA Discovery 套件
感谢eeworld,确认可完成测评计划。{:1_138:}
- 2025-01-18
-
回复了主题帖:
【英飞凌PSOC™ 4100S Max】③Capsense触摸按钮初体验
CoderX9527 发表于 2025-1-16 23:31
谢谢分享。
不仅分享了基础用例,还分享了触控调教,点赞。
嘿嘿,这就是所谓理论联系实际,我发现很多坛友发帖,有的只有案例,没有细讲背后的原理,有的干将理论死活不跑个实际案例,结果都是不太好的。
- 2024-12-15
-
回复了主题帖:
【英飞凌PSOC™ 4100S Max】③Capsense触摸按钮初体验
Capsense触摸功能是业界第一的看门功夫,尽管瑞萨、德仪都有,但英飞凌仍独领风骚,自己顶一个先。
-
加入了学习《Follow me第二季第3期 视频介绍》,观看 Follow me第二季第3期 任务提交
-
回复了主题帖:
【英飞凌PSOC™ 4100S Max】⑥作品提交:电机触控及屏显系统
lugl4313820 发表于 2024-12-14 08:32
看了一下,楼主的工具挺多呀,这转盘也是有个性哦!
顺带当作给自家小朋友的玩具(有多种不同类型的转盘,转起来效果各异)
- 2024-12-13
-
回复了主题帖:
【英飞凌PSOC™ 4100S Max】⑤SPI点亮TFT LCD屏幕
TL-LED 发表于 2024-12-12 22:02
模拟SPI刷新速度有点慢,硬件SPI方式会好些。
是这样的,模拟SPI唯一的优点就是移植性非常好,拿过来任何一款MCU,能在几分钟内搞定显示,但要去吃透硬件SPI可没那么简单。
- 2024-12-10
-
发表了主题帖:
【英飞凌PSOC™ 4100S Max】⑥作品提交:电机触控及屏显系统
结合前述分享,本篇提交作品:基于PSOC™ 4100S Max的电机触控及屏显系统。
基本架构如图:
其中:
触摸按钮用到了板载的 BTN0和BTN1触摸按钮
TFT-LCD使用基于SPI协议驱动的屏幕
电机驱动板使用基于L9110S芯片的直流电机驱动板,如下图:
电路如下图,MCU通过两个IO口(本例P8.0、P8.1)控制电机正反转。
控制逻辑如下图:
IA=H;IB=0 正转
IA=0;IB=H 反转
配置好硬件,我们着手软件的编写:
main函数,主要进行初始化设置、IO设置,屏幕初始化、显示“Infineon”LOGO,然后进入循环。
int main(void)
{
cy_rslt_t result = CY_RSLT_SUCCESS;
/* Initialize the device and board peripherals */
result = cybsp_init();
/* Board init failed. Stop program execution */
if (result != CY_RSLT_SUCCESS)
{
CY_ASSERT(CY_ASSERT_FAILED);
}
/* Enable global interrupts */
__enable_irq();
/* Initialize EZI2C */
initialize_capsense_tuner();
/* Initialize MSC CapSense */
initialize_capsense();
#if CY_CAPSENSE_BIST_EN
/* Measure the self capacitance of sensor electrode using BIST */
measure_sensor_cp();
#endif /* CY_CAPSENSE_BIST_EN */
/* Start the first scan */
Cy_CapSense_ScanAllSlots(&cy_capsense_context);
Cy_GPIO_Pin_FastInit(GPIO_PRT1,2u,CY_GPIO_DM_PULLDOWN,0,0);
Cy_GPIO_Pin_FastInit(GPIO_PRT1,3u,CY_GPIO_DM_PULLDOWN,0,0);
Cy_GPIO_Pin_FastInit(GPIO_PRT1,4u,CY_GPIO_DM_PULLDOWN,0,0);
Cy_GPIO_Pin_FastInit(GPIO_PRT1,5u,CY_GPIO_DM_PULLDOWN,0,0);
Cy_GPIO_Pin_FastInit(GPIO_PRT1,6u,CY_GPIO_DM_PULLDOWN,0,0);
Lcd_Init(); //初始化LCD
delayms(10); //延时一段时间
Lcd_Clear(black );
Show_RGB(0,0,176,44,blue);
Show_RGB(0,44,176,88,green);
Show_RGB(0,88,176,132,magenta);
Show_RGB(0,132,176,176,red);
Show_RGB(0,176,176,220,yellow);
Show_RGB(0,0,176,44,yellow);
Show_RGB(0,44,176,88,red);
Show_RGB(0,88,176,132,blue2);
Show_RGB(0,132,176,176,green);
Show_RGB(0,176,176,220,blue);
delayms(10); //延时一段时间
showimage(gImage_infineon);
Cy_GPIO_Pin_FastInit(GPIO_PRT8,0u,CY_GPIO_DM_PULLUP,0,0);
Cy_GPIO_Pin_FastInit(GPIO_PRT8,1u,CY_GPIO_DM_PULLUP,0,0);
for (;;)
{
if(CY_CAPSENSE_NOT_BUSY == Cy_CapSense_IsBusy(&cy_capsense_context))
{
/* Process all widgets */
Cy_CapSense_ProcessAllWidgets(&cy_capsense_context);
/* Turns LED ON/OFF based on button status */
led_control();
/* Establishes synchronized communication with the CapSense Tuner tool */
Cy_CapSense_RunTuner(&cy_capsense_context);
/* Start the next scan */
Cy_CapSense_ScanAllSlots(&cy_capsense_context);
/* Toggles GPIO for refresh rate measurement. Probe at P10.4. */
Cy_GPIO_Inv(CYBSP_SENSE_SCAN_RATE_PORT, CYBSP_SENSE_SCAN_RATE_NUM);
}
}
}
在led_control函数中,添加电机控制的代码以及屏幕显示代码。
按下BTN0,IA拉高(默认IA、IB都是0),电机顺时针旋转,并显示顺时针文字(实际是图片)。
松开时,IA=0,电机不转。
按下BTN1,IB拉高(默认IA、IB都是0),电机逆时针旋转,并显示逆时针文字(实际是图片)。
松开时,IB=0,电机不转。
static void led_control(void)
{
if(MSC_CAPSENSE_WIDGET_INACTIVE != Cy_CapSense_IsWidgetActive(CY_CAPSENSE_BUTTON0_WDGT_ID, &cy_capsense_context))
{
Cy_GPIO_Write(CYBSP_LED_BTN0_PORT, CYBSP_LED_BTN0_NUM, CYBSP_LED_STATE_ON);
Cy_GPIO_Set(GPIO_PRT8,0u);
showimage1(gImage_shun);
}
else
{
Cy_GPIO_Write(CYBSP_LED_BTN0_PORT, CYBSP_LED_BTN0_NUM, CYBSP_LED_STATE_OFF);
Cy_GPIO_Clr(GPIO_PRT8,0u);
}
if(MSC_CAPSENSE_WIDGET_INACTIVE != Cy_CapSense_IsWidgetActive(CY_CAPSENSE_BUTTON1_WDGT_ID, &cy_capsense_context))
{
Cy_GPIO_Write(CYBSP_LED_BTN1_PORT, CYBSP_LED_BTN1_NUM, CYBSP_LED_STATE_ON);
Cy_GPIO_Set(GPIO_PRT8,1u);
showimage1(gImage_ni);
}
else
{
Cy_GPIO_Write(CYBSP_LED_BTN1_PORT, CYBSP_LED_BTN1_NUM, CYBSP_LED_STATE_OFF);
Cy_GPIO_Clr(GPIO_PRT8,1u);
}
}
顺时针:
逆时针:
演示视频1
[localvideo]ebf3e8332faabc36417cbb0532ad64b7[/localvideo]
演示视频2
[localvideo]08cde9632b93b17f45311b201a16441a[/localvideo]
本次分享就到这里,谢谢!
- 2024-12-07
-
发表了主题帖:
【英飞凌PSOC™ 4100S Max】⑤SPI点亮TFT LCD屏幕
上一篇我们已经基于HAL库进行了基本的点灯,本章更进一步以SPI协议点亮TFT LCD屏幕。
这款屏幕采用的是ILI9320主控,SPI接口。显示尺寸为 176*220
TFT模块与开发板的接线方式如下:
//*****************************************************************************
//CS P1.2
//RST P1.3
//RS P1.4
//SDA P1.5
//CLK P1.6
//*****************************************************************************
硬件准备完毕,接下来就是软件编写环节。
本例采用IO口模拟SPI协议,这样具备快速移植的优点,当然速度不及硬件SPI。
TFT模块涉及到的5个控制引脚分别对应IO的高低。
#define CS_1 Cy_GPIO_Set(GPIO_PRT1, 2u);
#define CS_0 Cy_GPIO_Clr(GPIO_PRT1, 2u);
#define RST_1 Cy_GPIO_Set(GPIO_PRT1, 3u);
#define RST_0 Cy_GPIO_Clr(GPIO_PRT1, 3u);
#define RS_1 Cy_GPIO_Set(GPIO_PRT1, 4u);
#define RS_0 Cy_GPIO_Clr(GPIO_PRT1, 4u);
#define SDA_1 Cy_GPIO_Set(GPIO_PRT1, 5u);
#define SDA_0 Cy_GPIO_Clr(GPIO_PRT1, 5u);
#define CLK_1 Cy_GPIO_Set(GPIO_PRT1, 6u);
#define CLK_0 Cy_GPIO_Clr(GPIO_PRT1, 6u);
程序首要进行IO的设置:
输出模式
在模拟SPi协议环节,关键的串行发送一个byte的函数为:
在显示图片环节:
首先对目标图片进行取模操作:
(注意宽度不要超过屏幕显示宽度176)
生成了一个巨大的数组:
显示图片的函数如下:
//取模方式 水平扫描 从左到右 低位在前
void showimage(const unsigned char *p) //显示40*40 QQ图片
{
int i;
unsigned char picH,picL;
Lcd_Clear(white);//清屏
Lcd_SetRegion(0,70,175,152); //坐标设置
for(i=0;i<176*82;i++)
{
picL=*(p+i*2); //数据低位在前
picH=*(p+i*2+1);
Lcd_WriteData_16Bit(picH<<8 | picL);
}
}
最终main函数如下。
int main(void)
{
Cy_GPIO_Pin_FastInit(GPIO_PRT1,2u,CY_GPIO_DM_PULLDOWN,0,0);
Cy_GPIO_Pin_FastInit(GPIO_PRT1,3u,CY_GPIO_DM_PULLDOWN,0,0);
Cy_GPIO_Pin_FastInit(GPIO_PRT1,4u,CY_GPIO_DM_PULLDOWN,0,0);
Cy_GPIO_Pin_FastInit(GPIO_PRT1,5u,CY_GPIO_DM_PULLDOWN,0,0);
Cy_GPIO_Pin_FastInit(GPIO_PRT1,6u,CY_GPIO_DM_PULLDOWN,0,0);
Lcd_Init(); //初始化LCD
delayms(10); //延时一段时间
Lcd_Clear(black );
Show_RGB(0,0,176,44,blue);
Show_RGB(0,44,176,88,green);
Show_RGB(0,88,176,132,magenta);
Show_RGB(0,132,176,176,red);
Show_RGB(0,176,176,220,yellow);
Show_RGB(0,0,176,44,yellow);
Show_RGB(0,44,176,88,red);
Show_RGB(0,88,176,132,blue2);
Show_RGB(0,132,176,176,green);
Show_RGB(0,176,176,220,blue);
delayms(10); //延时一段时间
showimage(gImage_infineon);
}
附上源代码:
程序包括了刷屏,和显示图片两部分:
[localvideo]8e380ec409854d4424e4b33dca3a9f45[/localvideo]
-
回复了主题帖:
【英飞凌PSOC™ 4100S Max】④基于HAL的极简点灯之旅
冰是睡着的水吗 发表于 2024-12-7 20:06
你自己花了800多吗?那这800块给你报销没有
哥们你咨询管理员吧,咱们参加的不是同一个活动,谢谢!
-
回复了主题帖:
【英飞凌PSOC™ 4100S Max】④基于HAL的极简点灯之旅
冰是睡着的水吗 发表于 2024-12-7 18:33
知道,老哥,你是直接让群主给你买的,还是需要先自己下单买后面报销
自己购买。
-
回复了主题帖:
【英飞凌PSOC™ 4100S Max】④基于HAL的极简点灯之旅
冰是睡着的水吗 发表于 2024-12-7 15:11
兄弟,你是深圳的 X超?
哥们,我的是【英飞凌PSOC™ 4100S Max Pioneer套件】,跟你的不一样
你测评的那款是【CY8CKIT-062S2-AI评估板】,购买链接见:
https://www.digikey.cn/zh/products/detail/infineon-technologies/CY8CKIT-062S2-AI/24372080
-
回复了主题帖:
【英飞凌PSOC™ 4100S Max】④基于HAL的极简点灯之旅
冰是睡着的水吗 发表于 2024-12-7 15:11
兄弟,你是深圳的 X超?
你好,有啥事吗
- 2024-12-02
-
回复了主题帖:
【英飞凌PSOC™ 4100S Max】④基于HAL的极简点灯之旅
秦天qintian0303 发表于 2024-12-2 09:06
这图形化配置工具一家一个特色啊
用了这么多家,个人感觉还是ST的CubeMX最好用:loveliness:
- 2024-12-01
-
发表了主题帖:
【英飞凌PSOC™ 4100S Max】④基于HAL的极简点灯之旅
本篇分享一个简单的点灯之旅。
首先,我们新建一个空白的(模板)项目:
在新建的工程,左下角可以看到:Device Configurator 4.0
没错,这就是英飞凌Modus Toolbox的图形化配置工具,类似意法半导体的CubeMX
在Device Configurator 界面,我们可以看到熟悉的画面。
外设设置
管脚设置
时钟设置
DMA设置
设置好后,对应的右侧就自动生成了可用的代码。
/* NOTE: This is a preview only. It combines elements of the
* cycfg_pins.c and cycfg_pins.h files located in the folder
* C:/Users/Administrator/InfineonWork/00/libs/TARGET_CY8CKIT-041S-MAX/COMPONENT_BSP_DESIGN_MODUS/GeneratedSource.
*/
#include "cy_gpio.h"
#if defined (CY_USING_HAL)
#include "cyhal_hwmgr.h"
#endif //defined (CY_USING_HAL)
#define ioss_0_port_6_pin_4_PORT GPIO_PRT6
#define ioss_0_port_6_pin_4_PORT_NUM 6U
#define ioss_0_port_6_pin_4_PIN 4U
#define ioss_0_port_6_pin_4_NUM 4U
#define ioss_0_port_6_pin_4_DRIVEMODE CY_GPIO_DM_PULLDOWN_IN_OFF
#define ioss_0_port_6_pin_4_INIT_DRIVESTATE 1
#ifndef ioss_0_port_6_pin_4_HSIOM
#define ioss_0_port_6_pin_4_HSIOM HSIOM_SEL_GPIO
#endif
#define ioss_0_port_6_pin_4_IRQ ioss_interrupt_gpio_IRQn
#if defined (CY_USING_HAL)
#define ioss_0_port_6_pin_4_HAL_PORT_PIN P6_4
#define ioss_0_port_6_pin_4 P6_4
#define ioss_0_port_6_pin_4_HAL_IRQ CYHAL_GPIO_IRQ_NONE
#define ioss_0_port_6_pin_4_HAL_DIR CYHAL_GPIO_DIR_OUTPUT
#define ioss_0_port_6_pin_4_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_PULLDOWN
#endif //defined (CY_USING_HAL)
const cy_stc_gpio_pin_config_t ioss_0_port_6_pin_4_config =
{
.outVal = 1,
.driveMode = CY_GPIO_DM_PULLDOWN_IN_OFF,
.hsiom = ioss_0_port_6_pin_4_HSIOM,
.intEdge = CY_GPIO_INTR_DISABLE,
.vtrip = CY_GPIO_VTRIP_CMOS,
.slewRate = CY_GPIO_SLEW_FAST,
.vregEn = 0UL,
.ibufMode = 0UL,
.vtripSel = 0UL,
.vrefSel = 0UL,
.vohSel = 0UL,
};
#if defined (CY_USING_HAL)
const cyhal_resource_inst_t ioss_0_port_6_pin_4_obj =
{
.type = CYHAL_RSC_GPIO,
.block_num = ioss_0_port_6_pin_4_PORT_NUM,
.channel_num = ioss_0_port_6_pin_4_PIN,
};
#endif //defined (CY_USING_HAL)
void init_cycfg_pins(void)
{
Cy_GPIO_Pin_Init(ioss_0_port_6_pin_4_PORT, ioss_0_port_6_pin_4_PIN, &ioss_0_port_6_pin_4_config);
}
void reserve_cycfg_pins(void)
{
#if defined (CY_USING_HAL)
cyhal_hwmgr_reserve(&ioss_0_port_6_pin_4_obj);
#endif //defined (CY_USING_HAL)
}
本例完成简单的点灯之旅,因功能极其简单,就直接用HAL函数了。
cy_gpio.h
#include "cy_pdl.h"
#include "cybsp.h"
#include "cy_gpio.h"
int main(void)
{
Cy_GPIO_Pin_FastInit(GPIO_PRT6,4u,CY_GPIO_DM_PULLDOWN,0,0); //P6.4下拉,功能为IO,初始值0
Cy_GPIO_Pin_FastInit(GPIO_PRT12,0u,CY_GPIO_DM_PULLDOWN,0,0); //P12.0下拉,功能为IO,初始值0
for (;;)
{
Cy_GPIO_Inv(GPIO_PRT6, 4u);
Cy_GPIO_Inv(GPIO_PRT12, 0u);
/* Wait for 0.5 seconds */
Cy_SysLib_Delay(500);
}
}
编译运行就可以看到LED2(P6.4),LED3(P12.0)闪烁了。
[localvideo]a88c92344f9cb8d5dae9e597d1a0789b[/localvideo]
-
回复了主题帖:
【英飞凌PSOC™ 4100S Max】①开箱及开发环境搭建
我已经将很难下载的ModusToolbox 软件以及离线包分享到阿里云盘和百度网盘了,有需要可以下载。
https://bbs.eeworld.com.cn/thread-1300411-1-1.html
- 2024-11-30
-
发表了主题帖:
【英飞凌PSOC™ 4100S Max】③Capsense触摸按钮初体验
本章来到开发板的特色功能:触摸,也即英飞凌第五代Capsense。
既然是第五代,听起来已经发展了很久,来看新闻稿:
【2022 年 1 月13日,德国慕尼黑讯】英飞凌科技股份公司(FSE: IFX / OTCQX: IFNNY)近日发布了该公司第五代CAPSENSE™电容和电感式触摸感应人机界面(HMI)技术。新一代CAPSENSE解决方案集成于PSoC™微控制器中,可为家电、工业、消费级和物联网产品等要求严苛的用户界面提供更强的性能和更低的功耗。增强型HMI改进了检测范围、手势检测和指向性功能,并加入针对未来先进触摸屏的悬停检测功能,可实现近距离传感等先进解决方案。
新一代CAPSENSE技术的性能是前几代的十倍,功耗仅是前几代的十分之一,不仅支持工程师开发更直观的用户界面,降低了整体功耗,而且满足便携式电池供电的物联网设备的低功耗需求。全新CAPSENSE是智能门锁、智能开关、恒温器、智能音箱、电动工具、工业触摸屏等各种家用电器、工业应用以及其他物联网设备的理想选择。新技术也很适合有较大触摸屏的电磁炉、洗衣机和烘干机、冰箱、烤箱等工业和家用电器产品。
看重点,第五代Capsense相比第四代,信噪比高10倍,功耗低10倍,看起来很厉害有木有!!!
支持各类触控场景:按键(零维)、滑条(一维)、触摸屏(二维)、接近感应(三维)等……
第5代与第4代比一比:重点突出信噪比提升、功耗下降。
在开始本次测评前,我重点阅读了英飞凌的官方文档:
AN64846:CAPSENSE™入门
这个文档非常详细,总计131页,目录就可以看得出来,从原理到设计应有尽有,看完足足花了两个小时。
触摸按钮的主要原理是触摸导致电容变化被Capsense模块侦测并计算。
可分为自电容(按键、滑条)和互电容(支持多点触控的触控板)
各类触控场景及原理介绍:
以及重点介绍水滴和水流对 CAPSENSE™产生的影响
后面还介绍了各类触控传感器的设计要点,非常详细:
第二个重点参考的文档是:
【讲师演讲PDF】第五代触摸感应技术赋能物联网应用-英飞凌-彭祖年
这个PPT重点介绍第五代Capsense的新特性。
说了这么多,我们赶快开始我们的Capsense触摸按钮初体验吧!
新建项目时,选择MSC_CAPSENSE_CSD_Button_Tuning例程,也就是最基本的自电容按钮:
我们重点看例程的main.c函数
int main(void)
{
cy_rslt_t result = CY_RSLT_SUCCESS;
/* Initialize the device and board peripherals */
result = cybsp_init();
/* Board init failed. Stop program execution */
if (result != CY_RSLT_SUCCESS)
{
CY_ASSERT(CY_ASSERT_FAILED);
}
/* Enable global interrupts */
__enable_irq();
/* Initialize EZI2C */
initialize_capsense_tuner();
/* Initialize MSC CapSense */
initialize_capsense();
#if CY_CAPSENSE_BIST_EN
/* Measure the self capacitance of sensor electrode using BIST */
measure_sensor_cp();
#endif /* CY_CAPSENSE_BIST_EN */
/* Start the first scan */
Cy_CapSense_ScanAllSlots(&cy_capsense_context);
for (;;)
{
if(CY_CAPSENSE_NOT_BUSY == Cy_CapSense_IsBusy(&cy_capsense_context))
{
/* Process all widgets */
Cy_CapSense_ProcessAllWidgets(&cy_capsense_context);
/* Turns LED ON/OFF based on button status */
led_control();
/* Establishes synchronized communication with the CapSense Tuner tool */
Cy_CapSense_RunTuner(&cy_capsense_context);
/* Start the next scan */
Cy_CapSense_ScanAllSlots(&cy_capsense_context);
/* Toggles GPIO for refresh rate measurement. Probe at P10.4. */
Cy_GPIO_Inv(CYBSP_SENSE_SCAN_RATE_PORT, CYBSP_SENSE_SCAN_RATE_NUM);
}
}
}
分析下程序流程:
/* Initialize the device and board peripherals */ 初始化设备和外设
/* If Board init failed. Stop program execution */ 判断是否初始化成功
/* Enable global interrupts */ 开启全局中断
/* Initialize EZI2C */ 开启I2C,这个主要是用于Capsense调教
/* Initialize MSC CapSense */ 初始化CapSense单元
/* Start the first scan */ 开启第一次扫描
for 循环
/* Process all widgets */
/* Turns LED ON/OFF based on button status */ 根据按钮状态开启/关闭对应的LED灯
/* Establishes synchronized communication with the CapSense Tuner tool */ 与CapSense调教软件同步
/* Start the next scan */ 开启下一次扫描
/* Toggles GPIO for refresh rate measurement. Probe at P10.4. */ 翻转P10.4引脚,作为刷新率测量手段
LED控制代码块,也比较简单:根据按钮状态开启/关闭对应的LED灯
/*******************************************************************************
* Function Name: led_control
********************************************************************************
* Summary:
* Turning LED ON/OFF based on button status
*
*******************************************************************************/
static void led_control(void)
{
if(MSC_CAPSENSE_WIDGET_INACTIVE != Cy_CapSense_IsWidgetActive(CY_CAPSENSE_BUTTON0_WDGT_ID, &cy_capsense_context))
{
Cy_GPIO_Write(CYBSP_LED_BTN0_PORT, CYBSP_LED_BTN0_NUM, CYBSP_LED_STATE_ON);
}
else
{
Cy_GPIO_Write(CYBSP_LED_BTN0_PORT, CYBSP_LED_BTN0_NUM, CYBSP_LED_STATE_OFF);
}
if(MSC_CAPSENSE_WIDGET_INACTIVE != Cy_CapSense_IsWidgetActive(CY_CAPSENSE_BUTTON1_WDGT_ID, &cy_capsense_context))
{
Cy_GPIO_Write(CYBSP_LED_BTN1_PORT, CYBSP_LED_BTN1_NUM, CYBSP_LED_STATE_ON);
}
else
{
Cy_GPIO_Write(CYBSP_LED_BTN1_PORT, CYBSP_LED_BTN1_NUM, CYBSP_LED_STATE_OFF);
}
}
编译下载后,就能看到BTN0,BTN1的按钮动作,触发LED2,LED3亮灭了。
[localvideo]b11343bef72530a53c5adebcdd2fd6c2[/localvideo]
接下来,我们重点体验英飞凌触控重点功能:Capsense Tuner(调教)
CAPSENSE™系统的最佳性能取决于电路板布局、按键尺寸、覆盖层材料和应用要求。除了这些因素,还必须谨慎选择开关频率和阈值,以实现稳定可靠的性能。调校是一个使参数达到最优值的过程。调试用于维持较高的触摸敏感度,以及弥补这个过程中传感器板、覆盖层材料和环境条件的不确定性。
多种 CAPSENSE™器件支持英飞凌的 SmartSense 自动调校算法。该算法将自动配置各个参数以得到最佳性能,然后连续补偿由于系统、生产过程和环境不同引起的变化。
在主界面点击:Capsense Tuner 5.0
会打开Capsense Tuner 5.0界面
点击左上角的Connect,再点击其右边的Start就可以开启我们的调教过程了。
比如按下BTN0,就可以精确看到实时信号值。
注意在最下面的状态栏,可以看到用于Capsense调教的 I2C 通讯信息:刷新速率,状态,地址,时钟,电压等》
切换到Graphic View:可以看到实时曲线,包括了原始数据、计算数据。
然后切换到SNR Measurement 也就是信噪比测量选项卡:
1. 测量本地噪声(默认手指未按下时的电容、转换为计时器的数据)
2. 按下按钮,测量手指按下时的电容、转换为计时器的数据
3. 计算得出信噪比13.66。
另外还可以通过Logging按钮,设置实时记录各项数据用于调试分析,可以说非常详细了!
最后我们可以把手动调教的数据更新到程序中:
注意看左侧展示的设定数据:
最重要的就是触摸阈值:
Finger thredshold:64
手指门槛,也就是触摸阈值,大于64就被认为是按下了按钮。
下面是调教的视频:
[localvideo]e8a1f35634c660d081250f02eb8e03c8[/localvideo]
本次的分享就到这里。
- 2024-11-28
-
发表了主题帖:
【英飞凌PSOC™ 4100S Max】②modustoolbox软件及modustoolbox-offline-content分享
本帖最后由 cc1989summer 于 2024-11-28 22:24 编辑
书接上文:
https://bbs.eeworld.com.cn/thread-1298987-1-1.html
ModusToolbox 软件目前最新版是3.3版本。
ModusToolbox 3.3以及ModusToolbox 3.0下载地址:
https://softwaretools.infineon.com/tools/com.ifx.tb.tool.modustoolbox
ModusToolbox™ Offline Libraries离线软件包下载地址:
https://softwaretools.infineon.com/tools/com.ifx.tb.tool.modustoolboxofflinecontentpackage
然而由于上述地址下载简直是龟速,速度几乎在10KB/S,甚至会中途莫名其妙中断,我也是费了好大劲才下载下来。
为了方便坛友,特意把这3个软件上传到了阿里云盘(上传下载速度都能达到1MB/S以上,百度网盘就略显尴尬了)
PS:离线软件包不知是否因为zip格式且过大的原因无法分享成功...........
modustoolbox_3.3.0.16857_Windows_x64.exe 等文件
https://www.alipan.com/s/WoVPutBe3Rr
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
百度网盘:
通过百度网盘分享的文件:modustoo…等3个文件
链接:https://pan.baidu.com/s/106nqWsvv3DcbBFAEvqKltA?pwd=1r8i
提取码:1r8i
复制这段内容打开「百度网盘APP 即可获取」
今天的分享就到这里:)
- 2024-11-14
-
回复了主题帖:
【STM32H7S78-DK】(11)语音控制之旅
ly87802541 发表于 2024-11-13 12:31
大佬给力!竟然输出10+篇。
这么强大的板子,测评100+也不过分:loveliness: