[AIROC™ 蓝牙]

【英飞凌CYW20829测评】环境安装 与 基本任务实现

[复制链接]
467|6
手机看帖
扫描二维码
随时随地手机跟帖
dvacos|  楼主 | 2024-7-1 18:34 | 显示全部楼层 |阅读模式
本帖最后由 dvacos 于 2024-7-8 14:44 编辑

一、环境安装
1、ModusToolbox   IDE下载
https://softwaretools.infineon.com/tools/com.ifx.tb.tool.modustoolbox

从英飞凌官网下载IDE,下载的时候速度超级无敌慢,速度在20k/s,而且一直失败(用了魔法一样失败)。
最后换手机流量才下载下来,如果手机流量也下载不下来,建议换个地方连WiFi 或 用流量下。

2、安装
无脑下一步就好,直到遇到下图界面,要选择自定义安装才能修改安装位置。如果C盘空间够就无脑下一步即可。
7aae908cb3d5742c283b39e0e3ace6b3

修改安装位置后,会提示要手动添加环境变量。
8a1525e14cac23fc72dff059ad1fbea1

安装后,默认打开以下软件,按照箭头指引,选择IDE。
182f8d5b45dca1b804d2be6b43d793b8

打开IDE后果然提示,没有设置环境变量。
75cd91107d9b74e23a1e0bdf65b35dcb

环境变量配置如下:
CY_TOOLS_PATHS
D:/infineon/ModusToolbox/tools_3.2

我的安装路径是D盘的infineon文件夹下。要注意是反斜杠!!
8c051190d82c77e4c9e8f3dce141405c

配置好环境变量后关闭IDE,再打开(不行就重复几次,我是2次),就没有提示环境变量问题了。紧接着就开始创建工程了。
以上环境安装已完成!!

二、基本任务实现
我选择的基本任务是:
①建立开发调试环境。选择自己熟悉的编译器,完成代码的编译,下载与调试功能。成果展示:以视频或截图的方式,通过调试串口打印下列字符串“Hello 21ic, Hello Infineon CYW20829!"
②呼吸灯实验。通过板载LED灯,利用PWM波的特性,调整占空比实现LED灯的”呼吸“效果。成果展示:以视频或gif动图方式,充分发挥自己的想法,秀出自己那唯一的”呼吸灯“效果;
③串口收发实现。通过杜绑线,大家可以将开发板与自己的USB转串口线相连,使用桌面的串口终端实现PC上位机与开发板的人机数据交互。成果展示:以视频或截图的方式,展示串口数据的发送与接收。

1、点灯
1.1、工程创建、编译、下载
b1ccf89b3023cdbc689a71c6b89dd389

提示无法下载,报错,并且明显看到“github”相关字眼就知道是网络问题。在使用“魔法”之后就可以下载了,网络上有看见其他方法,可以解决这个问题,可以去查找一下,或者在本论坛搜索相关问题。
1f27d6e846fb6aba71cd80d8c2bd0fd7

搜索,并选择正确的开发板
9b193fb414d032c58f2ac1c9811b71ec

选择GPIO的例程
f6e0c02e062021800f1b97953a743323

开始编译 与 下载
f5ed5e66e87a170cbdb4efae07da22a3

IDE中内置串口监视器,以下是配置的方法
11a7587f1f7643a5e0c0bf4d5e12a449


1.2、点灯实验
#define DELAY_SHORT_MS (250) /* milliseconds */
#define DELAY_LONG_MS (500) /* milliseconds */
#defineLED_BLINK_COUNT (4)
#defineGPIO_INTERRUPT_PRIORITY (7u)

for (;;)
{
    /* Check the interrupt status */
    if (true == gpio_intr_flag)
    {
        gpio_intr_flag = false;
        /* Update LED toggle delay */
        if (DELAY_LONG_MS == delay_led_blink){
            delay_led_blink = DELAY_SHORT_MS;
        }else{
            delay_led_blink = DELAY_LONG_MS;
        }
    }

    /* Blink LED four times */
    for (count = 0; count < LED_BLINK_COUNT; count++)
    {
        cyhal_gpio_write(CYBSP_USER_LED, CYBSP_LED_STATE_ON);
        cyhal_system_delay_ms(delay_led_blink);
        cyhal_gpio_write(CYBSP_USER_LED, CYBSP_LED_STATE_OFF);
        cyhal_system_delay_ms(delay_led_blink);
    }
    /* Enter deep sleep mode */
    cyhal_syspm_deepsleep();
}

代码的循环中,写着亮250ms 熄灭500ms,循环4次后,芯片休眠,和观察到的现象一致!实验现象如下:
630066827efd112c3.gif

2、串口数据发送
在点灯工程上已经由串口打印的例程我,修改一下就可以实现任务一。
f9e83eabb277b2826abac9b0f46df8c4
如上图,新增以下代码后,就可以实现串口打印Hello 21ic, Hello Infineon CYW20829 了!!
printf("Hello 21ic, Hello Infineon CYW20829\r\n");

3、PWM点灯
参考“HAL_PWM_Square_Wave”例程就有初始化GPIO为PWM的例程,移植到点灯工程上测试、实验

初始化GPIO为PWM API
cyhal_pwm_init(&pwm_led_control, CYBSP_USER_LED, NULL);

输入的参数:
1、类型为cyhal_pwm_t的数据
2、LED引脚


控制PWM大小API
cyhal_pwm_set_duty_cycle(&pwm_led_control, pwm,PWM_FREQUENCY);
cyhal_pwm_start(&pwm_led_control);
cyhal_pwm_set_duty_cycle
作用:
设置PWM大小,赋值进“pwm_led_control”中
输入的参数:
1、类型为cyhal_pwm_t的数据
2、PWM大小
3、PWM频率

cyhal_pwm_start
作用:
将设置应用,即将“pwm_led_control”实际设置、写入相对应的寄存器中
输入的参数:
1、类型为cyhal_pwm_t的数据

实验代码:
<blockquote>For( ;; )
实验结果:
2392666827ea553317.gif
串口数据收发实验
参考“UART_Transmit_and_Receive”例程就有接收数据例程,移植到点灯工程上测试、实验
由于串口的初始化工程中已经配置完成,要实现接收串口数据,只需要添加接收数据部分代码:
cyhal_uart_getc(&cy_retarget_io_uart_obj,&read_data, 100);

cyhal_uart_getc
作用:将接收到的数据传入read_dat(用户自定义的数组)
参数:
类型为cyhal_uart_t的数据
储存接收数据的自定义数组
等待时间/阻塞时间,运行到这行代码时会等待100ms接收数据。

实验结果:
2a1410a829d7b48b693ec3a2946e5225
将接收到的数据,转发回上位机。以上完成了基础实验1、2、3,下面是组合实验。


三、基本任务组合演示
在分别实现
串口打印“Hello 21ic, Hello Infineon CYW20829!"
呼吸灯实验
串口收发实现
后我将以上功能,组合成一个小Demo,实现串口控制呼吸灯效果,GIF如下: 33.gif

代码实现重点:

在实现功能的过程中我发现,设置成为PWM的引脚,想要重新配置为GPIO,不能直接初始化引脚为GPIO,那样代码会直接卡机!!
所以要先反初始化PWM后再配置为GPIO,代码如下:
cyhal_gpio_free(CYBSP_USER_LED);
cyhal_pwm_init(&pwm_led_control, CYBSP_USER_LED, NULL);

同理先配置为GPIO,再配置为PWM也需要反初始化GPIO,代码如下:
cyhal_pwm_free(&pwm_led_control);
cyhal_gpio_init(CYBSP_USER_LED, CYHAL_GPIO_DIR_OUTPUT,CYHAL_GPIO_DRIVE_STRONG, CYBSP_LED_STATE_OFF);



11.gif

使用特权

评论回复
caigang13| | 2024-7-2 07:45 | 显示全部楼层
这个开发工具编译效率咋样?编辑器功能好用吗?

使用特权

评论回复
dvacos|  楼主 | 2024-7-2 11:09 | 显示全部楼层
caigang13 发表于 2024-7-2 07:45
这个开发工具编译效率咋样?编辑器功能好用吗?

感觉有点慢,但是整体使用下来,挺好用的

使用特权

评论回复
xionghaoyun| | 2024-7-2 17:28 | 显示全部楼层
很好教程

使用特权

评论回复
IFX-Unic| | 2024-7-7 23:06 | 显示全部楼层
非常详细非常棒的使用教程

使用特权

评论回复
IFXOcean| | 2024-7-10 12:50 | 显示全部楼层
dvacos 发表于 2024-7-2 11:09
感觉有点慢,但是整体使用下来,挺好用的

可以在modustoolbox shell中直接使用命令行方式编译,要快多,命令行编译也更灵活。一般shell会安装在 C:\Users\xxx\ModusToolbox\tools_3.x\modus-shell下面,直接执行Cygwin.bat就可以进入shell了

使用特权

评论回复
IFXOcean| | 2024-7-10 12:51 | 显示全部楼层
IFXOcean 发表于 2024-7-10 12:50
可以在modustoolbox shell中直接使用命令行方式编译,要快多,命令行编译也更灵活。一般shell会安装在 C: ...

浏览源码也可以使用vscode工具,在shell下进入源码目录,执行make vscode就可以生成vscode工程文件了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

89

帖子

0

粉丝