1612|3

2462

帖子

0

资源

纯净的硅(高级)

【先楫HPM6750EVK2】二:使用HPM SDK驱动RGB LED [复制链接]

本帖最后由 数码小叶 于 2023-1-8 21:08 编辑

上一篇已经安装好了Segger Embedded Studio for RISC-V,并且已经下好了HPM SDK,解压HPM SDK

2023-01-07_23-35-46.png

README.md里介绍的“HPM SDK Windows 开发环境配置工具”貌似用不上,因为HPM6750EVK2板子上没有HPM6750EVK的FT2232HL芯片。但是还是可以用来生成工程。

 

hpm_sdk是HPM SDK 核心软件包,包含了驱动、板级支持文件、中间件、soc 定义文件、实例、处理脚本、帮助文件等

2023-01-07_23-45-29.png

 

既然有例程,那借助于例程,肯定是熟悉HPM SDK最快捷的方式了。本来计划在demo里找个GPIO例程的,但是看到了rgb_led,于是乎就使用了这个例程。

在HPM SDK的帮助文档里,介绍了HPM SDK的命令行生成工程模式

generate_project -h
generate_project -list
generate_project -b hpm6750evk2

 

但是在HPM SDK解压文件里,发现了带GUI的工具start_gui.exe,使用起来似乎又变简单了

直接使用GUI工具

2023-01-02_12-48-09.png

 

相比于帮助文档里的命令行,这个使用起来更加直接了,生成基于hpm6750cvk2的rgb_led工程

2023-01-02_12-48-36.png

 

生成的rgb_led工程,可以选择直接使用Segger Embedded Studio打开

2023-01-08_12-24-04.png

 

2023-01-08_12-27-50.png

 

虽然第一次使用Segger Embedded Studio,但实际用起来,感觉和大部分基于 eclipse 的开发工具很相似,很容易上手。

直接编译刚才生成的工程,没有任何问题

2023-01-02_12-59-36.png

 

相比于其他IDE,Segger Embedded Studio最突出的一个地方,就是对于代码的占用,提示很明显,不论是代码导航窗口,还是编译界面,都可以看到代码分布情况。

    board_init();
    board_init_rgb_pwm_pins();
    printf("rgb led example\n");

 

在main函数里,两个初始化函数后是printf函数,于是看了下初始化函数,果然,里面有串口的初始化

    void board_init(void)-->
    void board_init_console(void)-->
    void board_init_console(void)-->
    void init_uart_pins(UART_Type *ptr)

    cfg.type = BOARD_CONSOLE_TYPE;
    cfg.base = (uint32_t) BOARD_CONSOLE_BASE;
    cfg.src_freq_in_hz = clock_get_frequency(BOARD_CONSOLE_CLK_NAME);
    cfg.baudrate = BOARD_CONSOLE_BAUDRATE;

    init_uart_pins((UART_Type *) cfg.base);

 

初始化函数里初始化了uart 0,波特率115200,下载完程序后,可以用串口助手观察。

RGB led管脚,配置成了PWM功能

void init_led_pins_as_pwm(void)
{
    /* Blue */
    HPM_IOC->PAD[IOC_PAD_PB20].FUNC_CTL = IOC_PB20_FUNC_CTL_PWM0_P_7;
    /* Green */
    HPM_IOC->PAD[IOC_PAD_PB18].FUNC_CTL = IOC_PB18_FUNC_CTL_PWM1_P_1;
    /* Red */
    HPM_IOC->PAD[IOC_PAD_PB19].FUNC_CTL = IOC_PB19_FUNC_CTL_PWM1_P_0;
}

 

对于管脚的复用功能,在HPM SDK里每个功能都定义出来了,这一点很方便,可以直观的配置调用,

2023-01-08_14-06-42.png

 

RGB三个管脚被设置为PWM功能,而PWM值在main函数的wile(1)中周期更改

        if (increase_step && (duty + step > reload)) {
            increase_step = false;
        } 

        if (increase_step) {
            duty += step;
        } else {
            duty -= step;
        }

        while (!do_update) {
            ;
        }
        pwm_update_raw_cmp_edge_aligned(pwm, pwm_cmp, duty);

 

本来想用Jlink调试的,结果一个接一个问题,花了几天时间,解决来解决去才发现版本太低,不支持基于RISC-V的HPM6750EVK2,最后只能选择串口 ISP下载了

2023-01-04_22-12-33.png

 

 

烧写速度很快,瞬间就完成了,可能是因为程序比较小的原因

2023-01-04_22-12-50.png

 

下载成功后,可以看到RGB的呼吸灯效果,打开串口助手,设置好波特率,确实有信息输出

2023-01-04_22-54-53.png

 

http://training.eeworld.com.cn/video/35425

 


回复

4675

帖子

0

资源

五彩晶圆(中级)

image.png 效果还行  


回复

1029

帖子

45

资源

纯净的硅(初级)

没有板载仿真器可惜了

点评

确实,不知道为啥把这个功能去掉了  详情 回复 发表于 2023-1-12 20:35

回复

2462

帖子

0

资源

纯净的硅(高级)

dql2016 发表于 2023-1-12 08:38 没有板载仿真器可惜了

确实,不知道为啥把这个功能去掉了


回复
您需要登录后才可以回帖 登录 | 注册

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表