- 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:
- 2024-11-13
-
回复了主题帖:
【英飞凌PSOC™ 4100S Max】①开箱及开发环境搭建
nmg 发表于 2024-11-13 10:06
感谢分享
:loveliness:好东西一起分享
- 2024-11-12
-
发表了主题帖:
【英飞凌PSOC™ 4100S Max】①开箱及开发环境搭建
本帖最后由 cc1989summer 于 2024-11-12 22:04 编辑
非常感谢EEWORLD以及DigiKey 得捷提供我这次试用机会。
早就听闻英飞凌在汽车控制领域的大名,这是我第一次使用英飞凌MCU,非常期待。
提前大致了解了下,英飞凌的MCU产品线主要有4类。
1. TC系列,主要是汽车控制,是英飞凌的王牌产品。基于TriCore™ 的产品在汽车中的应用非常广泛,包括内燃机控制、纯电动和混合动力汽车、变速器控制单元、底盘域、制动系统、电动转向系统、安全气囊、联网和高级驾驶辅助系统,并推动着自动化,电动化以及网联化的发展。
2. PSOC系列(收购cypress),涵盖较广,汽车控制、工业控制、消费电子、物联网等等都有涉及。
3. T2G系列,采用高性能 32 位 Arm® Cortex-M4F® 和 M7F CPU,工作频率最高可至 350 MHz,适用于互联汽车应用。
4. XMC系列,基于ARM® Cortex®-M内核。这个产品系列专门针对功率转换、工厂自动化、楼宇自控、交通和家用电器等领域的应用而打造。
以下为产品线图示:
回到开发板本身,收到后打开感觉十分惊艳,包装精美,看起来不像电子开发板,倒像个精致的礼物。
开发板做工也十分精美,最引人注目的是巨大的触摸板,这也是英飞凌的看家本领,第五代CapSense。
第五代CAPSENSE技术的性能是前几代的十倍,功耗仅是前几代的十分之一,不仅支持工程师开发更直观的用户界面,降低了整体功耗,而且满足便携式电池供电的物联网设备的低功耗需求。全新CAPSENSE是智能门锁、智能开关、恒温器、智能音箱、电动工具、工业触摸屏等各种家用电器、工业应用以及其他物联网设备的理想选择。新技术也很适合有较大触摸屏的电磁炉、洗衣机和烘干机、冰箱、烤箱等工业和家用电器产品。
配置温习下:
32 位 MCU 子系统
带有 DMA 控制器的 48 MHz Arm® Cortex®-M0+ CPU
384 KB 闪存和 32 KB SRAM
带 PLL 的外部 MHz 振荡器 (ECO) 和 32 KHz 手表晶体振荡器 (WCO)
加密块包括 AES、TRNG、CRA、PRNG 和 SHA
可编程模拟块
1 个 12 位、1 Msps SAR ADC
两个运算放大器可配置为可编程增益放大器 (PGA)、比较器 (CMP) 等。
两个低功耗比较器 (CMP)
两个 MSC(多传感转换器)模块集成了第五代 CAPSENSE 和电感传感
可编程数字模块
两个 16 位定时器/计数器/脉宽调制器 (TCPWM) 模块
两个串行通信模块 (SCB),可配置为 I2C、SPI 或 UART
段码式 LCD
I2S 音频输出
一个 CAN-FD(具有灵活数据速率的控制器局域网络)控制器
通电后,有个触摸演示程序。
[localvideo]7799f6b9298a0ff6a61f1d26d395b9ae[/localvideo]
接下来是开发环境搭建。
麻烦事来了。
目前最新版开发工具是ModusToolbox 3.3
下载网址,实际也包含ModusToolbox 3.0:
https://softwaretools.infineon.com/tools/com.ifx.tb.tool.modustoolbox
下载(下载速度10+KB/s)安装后,新建工程,发现无法获取芯片列表,该列表需要从github获取,然而由于无法连上github,实际无法使用。
后来发现这是个通病,英飞凌的本地化做的不够好,没有在中国设置服务器。
EEWORLD已经有坛友发过这个问题,
https://bbs.eeworld.com.cn/thread-1237088-1-1.html
https://bbs.eeworld.com.cn/thread-1237247-1-1.html
解决方案是安装ModusToolbox 3.0 以及离线软件包。
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
下载下来后(下载速度10+KB/s,早上6点可达到500KB/s),
先安装ModusToolbox 3.0,设置好环境变量CY_TOOLS_PATHS
新建项目,仍然得到错误信息,此时,选择offline选项,
注意看下面的报警提示:
没有找到离线包。
那么我们就在提示的目录新建 .modustoolbox目录,然后将下载下来的离线包(整体是个offline目录)存到此目录。
然后重新打开软件新建工程终于可以了!!!!!!
选择官方例程:GPIO pins
然后进行编译及下载。
注意Debug设置,选择 Program(KitProg3)
以下是下载信息:
Open On-Chip Debugger 0.11.0+dev-4.4.0.2134 (2022-09-08-13:07)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
kitprog3 set_latest_version: C:/Users/Administrator/ModusToolbox/tools_3.0/fw-loader 2.40.1241
Info : auto-selecting first available session transport "swd". To override use 'transport select <transport>'.
adapter speed: 2000 kHz
** Auto-acquire enabled, use "set PSOC4_USE_ACQUIRE 0" to disable
cortex_m reset_config sysresetreq
Info : Using CMSIS-DAPv2 interface with VID:PID=0x04b4:0xf155, serial=14060E6D01042400
Info : CMSIS-DAP: SWD supported
Info : CMSIS-DAP: Atomic commands supported
Info : CMSIS-DAP: FW Version = 2.0.0
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1
Info : CMSIS-DAP: Interface ready
Info : KitProg3: FW version: 2.30.1155
Info : KitProg3: Pipelined transfers enabled
Info : KitProg3: Asynchronous USB transfers enabled
Info : VTarget = 4.885 V
Info : kitprog3: acquiring the device (mode: reset)...
Info : clock speed 2000 kHz
Info : SWD DPIDR 0x0bc11477
Info : [psoc4.cpu] Cortex-M0+ r0p1 processor detected
Info : [psoc4.cpu] target has 4 breakpoints, 2 watchpoints
Info : [psoc4.cpu] external reset detected
*****************************************
** Silicon: 0x2E2D, Family: 0xBE, Rev.: 0x11 (A0)
** Detected Family: PSoC 4100S Max
** Detected Device: CY8C4149AZI-S598
** Detected Main Flash size, kb: 384
** Chip Protection: OPEN
*****************************************
Info : gdb port disabled
Info : starting gdb server for psoc4.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : SWD DPIDR 0x0bc11477
Info : kitprog3: acquiring the device (mode: reset)...
psoc4.cpu halted due to debug-request, current mode: Thread
xPSR: 0xa1000000 pc: 0x10000040 msp: 0x20007fe8
** Device acquired successfully
** Programming Started **
auto erase enabled
Info : Padding image section 0 at 0x0000146c with 148 bytes (bank write end alignment)
Warn : Only mass erase available, erase skipped! (psoc4 mass_erase)
[ 4%] [# ] [ Programming ]
[ 9%] [## ] [ Programming ]
[ 14%] [#### ] [ Programming ]
[ 19%] [###### ] [ Programming ]
[ 23%] [####### ] [ Programming ]
[ 28%] [######## ] [ Programming ]
[ 33%] [########## ] [ Programming ]
[ 38%] [############ ] [ Programming ]
[ 42%] [############# ] [ Programming ]
[ 47%] [############### ] [ Programming ]
[ 52%] [################ ] [ Programming ]
[ 57%] [################## ] [ Programming ]
[ 61%] [################### ] [ Programming ]
[ 66%] [##################### ] [ Programming ]
[ 71%] [###################### ] [ Programming ]
[ 76%] [######################## ] [ Programming ]
[ 80%] [######################### ] [ Programming ]
[ 85%] [########################### ] [ Programming ]
[ 90%] [############################ ] [ Programming ]
[ 95%] [############################## ] [ Programming ]
[100%] [################################] [ Programming ]
wrote 5376 bytes from file C:/Users/Administrator/InfineonWork/GPIO_Pins/build/APP_CY8CKIT-041S-MAX/Debug/mtb-example-psoc4-gpio.hex in 0.291444s (18.014 KiB/s)
** Programming Finished **
** Program operation completed successfully **
srst_only separate srst_gates_jtag srst_open_drain connect_deassert_srst
Info : SWD DPIDR 0x0bc11477
Polling target psoc4.cpu failed, trying to reexamine
Info : SWD DPIDR 0x0bc11477
Info : [psoc4.cpu] Cortex-M0+ r0p1 processor detected
Info : [psoc4.cpu] target has 4 breakpoints, 2 watchpoints
shutdown command invoked
Info : psoc4.dap: powering down debug domain...
Warn :
*******************************************************************************************
* KitProg firmware is out of date, please update to the latest version (2.40.1241)
* using fw-loader tool which can be found in the following folder
* C:/Users/Administrator/ModusToolbox/tools_3.0/fw-loader
*******************************************************************************************
运行效果如下:
[localvideo]74999f0ea117114a68fbab4650a38d04[/localvideo]
本次的开箱分享就到这里了~
- 2024-11-09
-
发表了主题帖:
【STM32H7S78-DK】(11)语音控制之旅
本帖最后由 cc1989summer 于 2024-11-9 22:39 编辑
语音识别、人工智能是目前的大热门。
咱们的STM32H7S78-DK是自带有数字麦克风的,也就是U1:MP23DB01
然而要想实现STM32语音识别,涉及到人工智能CNN,我目前还没摸索会。
网上有相关的内容参考:
https://github.com/gk969/stm32-speech-recognition
这里就基于离线语音识别模块:ASR-PRO
模块介绍:本模块是针对低成本离线语音应用方案开发的一款通用、便携、低功耗高性能的语音识 别模组,采用最新的 ASRPRO 芯片,内置神经网络处理器,能支持 DNN\TDNN\RNN 等神 经网络及卷积运算,支持语音识别、声纹识别、语音增强、语音检测等功能,具备强劲的回 声消除和环境噪声抑制能力,语音识别效果优于其它语音芯片。该芯片方案还支持汉语、英 语、日语等多种全球语言,可广泛应用于家电、照明、玩具、可穿戴设备、工业、汽车等产 品领域,搭配天问 Block 图形化编程软件,快速实现语音交互及控制和各类智能语音方案应 用。
大概模式是这样:
使用模块配套的软件:可以自定义语音模型,并下载到芯片中,实现离线语音识别:
下图是我预先定义好的唤醒语句,以及控制语句,生成模型并下载后,就可以开启STM32语音控制之旅了。
STM32H7S78-DK需要设置的主要是串口(UART7,PE8/PE7)以及GPIO。
关于串口(UART7,PE8/PE7),需要注意的是,开发板没有引出,整块开发板只有虚拟串口(UART4)可用。
需要对电路加以改动,详见我的前述帖子:
https://bbs.eeworld.com.cn/thread-1295392-1-1.html
记得一定要开启串口中断。
以下是main.c函数,
记得此语句开启串口接收中断:
HAL_UART_Receive_IT(&huart7, UART_BUF,sizeof(UART_BUF));
int main(void)
{
MPU_Config();
/* USER CODE BEGIN 1 */
/* Enable I-Cache---------------------------------------------------------*/
SCB_EnableICache();
/* Enable D-Cache---------------------------------------------------------*/
SCB_EnableDCache();
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Update SystemCoreClock variable according to RCC registers values. */
SystemCoreClockUpdate();
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_UART7_Init();
/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart7, UART_BUF,sizeof(UART_BUF));
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
在串口中断语句中,加入控制语句:
此句是把语音识别模块发给MCU的指令,由MCU发给电脑端,做串口监听。
HAL_UART_Transmit(&huart7, UART_BUF,sizeof(UART_BUF),1000);
此句是处理完串口接收中断,再次进入串口中断。
HAL_UART_Receive_IT(&huart7, UART_BUF,sizeof(UART_BUF));
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit(&huart7, UART_BUF,sizeof(UART_BUF),1000);
if(UART_BUF[0] == 0x01)
{HAL_GPIO_WritePin(LD1_GPIO_PORT, LD1_Pin,SET);}
if(UART_BUF[0] == 0x02)
{HAL_GPIO_WritePin(LD2_GPIO_PORT, LD2_Pin,SET);}
if(UART_BUF[0] == 0x03)
{HAL_GPIO_WritePin(LD3_GPIO_PORT, LD3_Pin,RESET);}
if(UART_BUF[0] == 0x04)
{HAL_GPIO_WritePin(LD4_GPIO_PORT, LD4_Pin,RESET);}
if(UART_BUF[0] == 0x05)
{HAL_GPIO_WritePin(LD1_GPIO_PORT, LD1_Pin,RESET);}
if(UART_BUF[0] == 0x06)
{HAL_GPIO_WritePin(LD2_GPIO_PORT, LD2_Pin,RESET);}
if(UART_BUF[0] == 0x07)
{HAL_GPIO_WritePin(LD3_GPIO_PORT, LD3_Pin,SET);}
if(UART_BUF[0] == 0x08)
{HAL_GPIO_WritePin(LD4_GPIO_PORT, LD4_Pin,SET);}
if(UART_BUF[0] == 0x09)
{
HAL_GPIO_WritePin(LD1_GPIO_PORT, LD1_Pin,SET);
HAL_GPIO_WritePin(LD2_GPIO_PORT, LD2_Pin,SET);
HAL_GPIO_WritePin(LD3_GPIO_PORT, LD3_Pin,RESET);
HAL_GPIO_WritePin(LD4_GPIO_PORT, LD4_Pin,RESET);
}
if(UART_BUF[0] == 0x10)
{
HAL_GPIO_WritePin(LD1_GPIO_PORT, LD1_Pin,RESET);
HAL_GPIO_WritePin(LD2_GPIO_PORT, LD2_Pin,RESET);
HAL_GPIO_WritePin(LD3_GPIO_PORT, LD3_Pin,SET);
HAL_GPIO_WritePin(LD4_GPIO_PORT, LD4_Pin,SET);
}
HAL_UART_Receive_IT(&huart7, UART_BUF,sizeof(UART_BUF));
}
运行效果:
[localvideo]9b28ca4de63950b6a27f30dee0c6f2b9[/localvideo]
再增加点花样,对于显示屏的颜色给与控制。增加以下指令:
程序代码,参考BSP中的LCD显示:
int main(void)
{
/* MPU Configuration--------------------------------------------------------*/
MPU_Config();
/* Enable the CPU Cache */
/* Enable I-Cache---------------------------------------------------------*/
SCB_EnableICache();
/* Enable D-Cache---------------------------------------------------------*/
// SCB_EnableDCache();
/* STM32H7RSxx HAL library initialization:
- Systick timer is configured by default as source of time base, but user
can eventually implement his proper time base source (a general purpose
timer for example or other time source), keeping in mind that Time base
duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and
handled in milliseconds basis.
- Set NVIC Group Priority to 4
- Low Level Initialization
*/
HAL_Init();
/* Configure the system clock to 400 MHz */
SystemClock_Config();
/* Initialize leds */
BSP_LED_Init(LED_GREEN);
BSP_LED_Init(LED_RED);
/* Configure the User push-button in EXTI Mode */
BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI);
MX_UART7_Init();
HAL_UART_Transmit(&huart7, UART_BUF9, sizeof(UART_BUF9),100);
HAL_UART_Receive_IT(&huart7, UART_BUF,sizeof(UART_BUF));
/* Init LCD */
BSP_LCD_Init(0, LCD_ORIENTATION_LANDSCAPE);
BSP_LCD_GetBrightness(0, &Brightness);
BSP_LCD_SetBrightness(0, 40);
BSP_LCD_GetBrightness(0, &Brightness);
UTIL_LCD_SetFuncDriver(&LCD_Driver);
//BSP_LCD_Reload(0, BSP_LCD_RELOAD_VERTICAL_BLANKING);
//Display_DemoDescription();
UTIL_LCD_FillRect(0, 0, 800, 480, UTIL_LCD_COLOR_GREEN);
//AudioPlay_demo();
//BSP_examples[4].DemoFunc();
while (1)
{
}
}
串口中断部分,解析语音指令显示代码:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit(&huart7, UART_BUF,sizeof(UART_BUF),1000);
if(UART_BUF[0] == 0x11)
{
/* Display LCD messages */
UTIL_LCD_FillRect(0, 0, 800, 480, UTIL_LCD_COLOR_RED);
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_WHITE);
UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_MAGENTA);
UTIL_LCD_SetFont(&Font24);
UTIL_LCD_DisplayStringAt(0, 200, (uint8_t *)"AUDIO PLAYER by cc1989summer", CENTER_MODE);
}
if(UART_BUF[0] == 0x12)
{
/* Display LCD messages */
UTIL_LCD_FillRect(0, 0, 800, 480, UTIL_LCD_COLOR_GREEN);
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_WHITE);
UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_BLUE);
UTIL_LCD_SetFont(&Font24);
UTIL_LCD_DisplayStringAt(0, 200, (uint8_t *)"AUDIO PLAYER by cc1989summer", CENTER_MODE);
}
if(UART_BUF[0] == 0x13)
{
/* Display LCD messages */
UTIL_LCD_FillRect(0, 0, 800, 480, UTIL_LCD_COLOR_BLUE);
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_WHITE);
UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_BLUE);
UTIL_LCD_SetFont(&Font24);
UTIL_LCD_DisplayStringAt(0, 200, (uint8_t *)"AUDIO PLAYER by cc1989summer", CENTER_MODE);
}
if(UART_BUF[0] == 0x14)
{
/* Display LCD messages */
UTIL_LCD_FillRect(0, 0, 800, 480, UTIL_LCD_COLOR_WHITE);
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_WHITE);
UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_BLUE);
UTIL_LCD_SetFont(&Font24);
UTIL_LCD_DisplayStringAt(0, 200, (uint8_t *)"AUDIO PLAYER by cc1989summer", CENTER_MODE);
}
if(UART_BUF[0] == 0x15)
{
/* Display LCD messages */
UTIL_LCD_FillRect(0, 0, 800, 480, UTIL_LCD_COLOR_MAGENTA);
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_WHITE);
UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_BLUE);
UTIL_LCD_SetFont(&Font24);
UTIL_LCD_DisplayStringAt(0, 200, (uint8_t *)"AUDIO PLAYER by cc1989summer", CENTER_MODE);
}
if(UART_BUF[0] == 0x16)
{
/* Display LCD messages */
UTIL_LCD_FillRect(0, 0, 800, 480, UTIL_LCD_COLOR_BLACK);
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_WHITE);
UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_BLUE);
UTIL_LCD_SetFont(&Font24);
UTIL_LCD_DisplayStringAt(0, 200, (uint8_t *)"AUDIO PLAYER by cc1989summer", CENTER_MODE);
}
if(UART_BUF[0] == 0x17)
{
/* Display LCD messages */
UTIL_LCD_FillRect(0, 0, 800, 480, UTIL_LCD_COLOR_ORANGE);
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_WHITE);
UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_BLUE);
UTIL_LCD_SetFont(&Font24);
UTIL_LCD_DisplayStringAt(0, 200, (uint8_t *)"AUDIO PLAYER by cc1989summer", CENTER_MODE);
}
HAL_UART_Receive_IT(&huart7, UART_BUF,sizeof(UART_BUF));
}
运行效果;
[localvideo]3a9dfed40ae59b39aee5a76c067e0372[/localvideo]
最后,结合此前的练习:
【STM32H7S78-DK】⑦连接WIFI获取时间(基于ESP8266)
https://bbs.eeworld.com.cn/thread-1295392-1-1.html
加入语音唤醒WIFI时间指令,思路跟上述一样。
在对应的串口中断中加入获取时间的指令。
[localvideo]74addb62a5040d2e86964dc05598b3b1[/localvideo]
至此,全部的【STM32H7S78-DK】体验及分享就到这里了。
总计11篇贴文,付出很多时间精力,也收获很多知识和经验,不仅对对STSTM32H7S78开发掌握更深,对ST的各类软件操作也更加熟练。
当然,由于时间关系,很多高端、丰富的功能还没时间体验,转眼就到交作业的截止时间了。
包括 MXCHIP的SPI WIFI模块、数字麦克风、摄像头(坛友有首发)、以太网、DMA、TouchGFX、Free-RTOS、NanoEdge™ AI Studio等等。
有些浅尝辄止,有些还未开始体验,待后续有时间,一定深入学习,进一步发掘和体验STM32H7S78-DK的宝藏功能。
我目前接下来的目标是:做一个基于互联网的网络收音机,结合TouchGFX的丰富界面,功能一定很酷炫。
还有就是视频播放器、将存在SD卡上的视频,比如mp4格式,解码并播放出来。
再有就是目前流行的人工智能,比如基于TouchGFX的手写识别,直接在触摸屏上一边手写,一边自动识别。
想法很多,接下来逐步实践吧,所谓学无止境就是这样吧。
最后,非常感谢EEWORLD和ST给我的这次机会,我很珍惜也很努力,希望EEWORLD越办越好,给我们电子从业人员和电子爱好者提供更多的学习成长机会,也祝愿ST越来越强大!
- 2024-11-02
-
回复了主题帖:
# STM32H7S78-DK 开发套件三周目评测:简单声音采集保存之使用 SD 卡读写的实现与分析
哥们,你这帖子在那干讲,没开发板跑的实物图啊。{:1_131:}