打印
[AIROC™ 蓝牙]

环境安装 与 基本任务实现

[复制链接]
178|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dvacos|  楼主 | 2024-7-1 18:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dvacos 于 2024-7-1 18:34 编辑

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

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

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


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


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


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


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

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


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

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

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


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


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


选择GPIO的例程


开始编译 与 下载


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



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次后,芯片休眠,和观察到的现象一致!实验现象如下:


2、串口数据发送
在点灯工程上已经由串口打印的例程我,修改一下就可以实现任务一。

如上图,新增以下代码后,就可以实现串口打印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( ;; )
实验结果:

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

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

实验结果:

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


三、基本任务组合演示
在分别实现
串口打印“Hello 21ic, Hello Infineon CYW20829!"
呼吸灯实验
串口收发实现
后我将以上功能,组合成一个小Demo,实现串口控制呼吸灯效果,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 (3.8 MB )

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 | 只看该作者
很好教程

使用特权

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

本版积分规则

13

主题

87

帖子

0

粉丝