[AIROC™ 蓝牙]【英飞凌CYW20829测评】环境安装 与 基本任务实现

一、环境安装
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


---------------------
作者:dvacos
链接:https://bbs.21ic.com/icview-3387278-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值