首先感谢面包板社区和RT-Thread提供这次试用的机会。本次测评一句话总结如下:
板子性能优异,可拓展性强,开发环境和资料完整,板子布局略显不合理。
下面是详细测评和二开的过程,供大家参考避坑。
开箱
本次套件共包含两部分底板和无线模块,图片就不上了,大家测评都已经传过了。这里吐槽一下,无线模块安装之后会遮挡一半capsense的触摸条,影响capsense的使用。望厂家能改进下。
开发环境部署
避坑:不要下载安装Modus toolbox,这是RT-Thread推出的开发板,和infineon官方的板子有一定区别,在Modus Toolbox中找不到对应评估板。一定要下载安装RT-Thread Studio开发环境。
- 环境搭建第一步就是下载安装RT-Thread Studio,这一步没啥说的,一路next就行。
- 安装完成之后安装开发板支持包,这里选择PSOC62-IFX-EVAL-KIT,一路向下所有的依赖就都安装好了。
3、新建工程测试demo,这里RT-Thread提供了三个demo工程可供测试,一个是简单的底板LED闪烁,另外两分别是BLE和WIFI的测试,其中BLE的测试需要搭配infineio的app,有需要可以自行下载安装,demo测试非常顺利,说明板子硬件和开发环境没有问题。三个demo的代码和注意事项都在https://github.com/RT-Thread-Studio/sdk-bsp-cy8c624-infineon-evaluationkit.git 仓库中,有需要的伙伴自行下载。
基于wifi和capsense的PC触控外设开发
- 玩PSOC62肯定要试一下特色功能capsense slider功能,也就是电容感应触摸滑条功能,幸运的是这个功能RT-Thread也为我们提供了一个简单的demo,只要在配置中打开相应开关就可以启用相关功能,如下图所示。打开相应开关之后需要保存一下工程,IDE会自动更新配置。之后编译下载运行,通过串口输入“Slider_ctrl_sample”便可启动slider线程,直观的感觉就是通过触摸滑条板子上呼吸灯旁边的LED的亮度会有变化,拍视频多有不便,大家就自行体验吧。
- 有了滑条和wifi只要在PC上写个简单的socket就可以实现无线触控功能了,想想还是挺酷的,哈哈,说干就干,第一步打开板子的socket支持,如下图所示,然后在滑条处理的函数中加上相应的socket处理过程,由于只是demo我就直接通过udp socket把触摸数据发送到电脑上了。
下面是简单的udp socket代码,供参考,使用的时候记得include相应的头文件。
int sock;
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
rt_kprintf("Socket error\n");
return;
}
struct hostent *host;
struct sockaddr_in server_addr;
host = (struct hostent *) gethostbyname("192.168.1.12");
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(50001);
server_addr.sin_addr = *((struct in_addr *)host->h_addr);
rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
char brightChar[4]={0};
itoa(ledData->brightness, brightChar, 10);
sendto(sock, brightChar, 4, 0,
(struct sockaddr *)&server_addr, sizeof(struct sockaddr));
closesocket(sock);
这段代码插在slider_sample.c的void update_led_state(led_data_t *ledData)这个函数中,用来将led亮度变化的数据传致PC端,192.168.1.12是PC端IP地址,由于对路由器作了设置有线和无线可以互通。
- 然后又是编译下载运行,成功运行之后串口控制台输出如下:
[12:46:58.549]收←◆
\ | /
- RT - Thread Operating System
/ | \ 5.0.1 build Jul 22 2024 10:40:24
2006 - 2022 Copyright by RT-Thread team
lwIP-2.0.3 initialized!
[I/sal.skt] Socket Abstraction Layer initialize success.
msh >
[12:46:59.438]收←◆WLAN MAC Address : CC:47:40:11:19:FF
WLAN Firmware : wl0: Dec 12 2022 18:42:34 version 13.10.271.293 (9974213 CY) FWID 01-e2162f9b
WLAN CLM : API: 18.2 Data: 9.10.0 Compiler: 1.36.1 ClmImport: 1.34.1 Creation: 2022-08-16 03:35:21
WHD VERSION : 2.6.1.20115 : v2.6.1 : GCC 10.2 : 2023-06-28 02:01:23 +0000
[I/WLAN.dev] wlan init success
[I/WLAN.lwip] eth device init ok name:w0
[I/WLAN.dev] wlan init success
Function whd_wifi_get_mac_address failed at line 2776 checkres = 33556433
[I/WLAN.lwip] eth device init ok name:w1
上述表明程序启动正常,wifi初使化正常,然后通过wifi join SSID PASSWORD命令让无线模块接入无线路由器,成功之后会有如下反馈,192.168.1.16是wifi模块获取到的IP地址:
[12:47:31.606]收←◆WLAN.mgnt] wifi connect success ssid:CU_gdR3
msh >
msh >
[12:47:33.574]收←◆[I/WLAN.lwip] Got IP address : 192.168.1.16
然后输入 Slider_ctrl_sample 命令启动capsense滑条,触摸数据就可以直接发到PC端了,我这里用sscom模拟了一个UDP服务端,接收到的数据如下图所示,说明数据完全打通,后续计划用Qt作一个图形界面来处理模块发送的数据,实现更炫酷的功能,有兴趣的可以一起搞。测评就暂时先到这儿吧。