立即注册
查看: 657|回复: 0

[海思技术资料] 海思Hi3861 HiSpark-WiFi-IoT三色灯功能编程指南

已绑定手机
已实名认证
发表于 2021-12-15 14:35:39 | 显示全部楼层 |阅读模式 来自 广东省深圳市
1、WIFI-IoT 开发板三色灯功能实现
1.1 三色灯硬件准备
WIFI-IOT 开发板套件,名称 HiSpark,以下简称 HiSpark 开发板套件。
1.jpg

1.2 三色灯功能硬件介绍
RED/GREEN /BULE 三色灯为 IO 控制引脚,当 IO 口为高电平时,对应灯点亮;当 IO 口为低电平时,对应灯熄灭。
三色灯中,各色灯对应的 GPIO 口:
RED —— GPIO_10
GREEN —— GPIO_11
BULE —— GPIO_12
1.3 三色灯功能软件实现
1. LiteOS 打开 WIFI-IOT 的 SDK 后,首先初始化 PWM 配置
PWM 初始化需要调用三个函数。分别为:
hi_u32 hi_io_set_func(hi_io_name id, hi_u8 val);
hi_u32 hi_pwm_init(hi_pwm_port port);
hi_u32 hi_pwm_set_clock(hi_pwm_clk_source clk_type);
以下对这三个函数的详细介绍:
●hi_u32 hi_io_set_func(hi_io_name id, hi_u8 val);
此函数为 IO 端口复用功能配置函数。
hi_io_name id:gpio 硬件管脚编号,对应的是硬件管脚上的 GPIO pin 脚,枚举类型如下:
typedef enum {
HI_IO_NAME_GPIO_0, /**< GPIO0 */
HI_IO_NAME_GPIO_1, /**< GPIO1 */
HI_IO_NAME_GPIO_2, /**< GPIO2 */
HI_IO_NAME_GPIO_3, /**< GPIO3 */
HI_IO_NAME_GPIO_4, /**< GPIO4 */
HI_IO_NAME_GPIO_5, /**< GPIO5 */
HI_IO_NAME_GPIO_6, /**< GPIO6 */
HI_IO_NAME_GPIO_7, /**< GPIO7 */
HI_IO_NAME_GPIO_8, /**< GPIO8 */
HI_IO_NAME_GPIO_9, /**< GPIO9 */
HI_IO_NAME_GPIO_10, /**< GPIO10 */
HI_IO_NAME_GPIO_11, /**< GPIO11 */
HI_IO_NAME_GPIO_12, /**< GPIO12 */
HI_IO_NAME_GPIO_13, /**< GPIO13 */
HI_IO_NAME_GPIO_14, /**< GPIO14 */
HI_IO_NAME_SFC_CSN, /**< SFC_CSN */
HI_IO_NAME_SFC_IO1, /**< SFC_IO1 */
HI_IO_NAME_SFC_IO2, /**< SFC_IO2 */
HI_IO_NAME_SFC_IO0, /**< SFC_IO0 */
HI_IO_NAME_SFC_CLK, /**< SFC_CLK */
HI_IO_NAME_SFC_IO3, /**< SFC_IO3 */
HI_IO_NAME_MAX,
} hi_io_name;
hi_u8 val :对应 GPIO 引脚功能,如果该引脚复用,可以配置为其他的复用功能,如:
UART/PWM/I2C/SPI/SDIO 等功能;
例如:需要选取 gpio_10 的 PWM 复用功能,找到 hi_io_func_gpio_10 枚举定义:
typedef enum {
HI_IO_FUNC_GPIO_10_GPIO,
HI_IO_FUNC_GPIO_10_I2C0_SDA,
HI_IO_FUNC_GPIO_10_UART2_CTS_N,
HI_IO_FUNC_GPIO_10_SDIO_D3,
HI_IO_FUNC_GPIO_10_SPI0_CK,
HI_IO_FUNC_GPIO_10_PWM1_OUT,
HI_IO_FUNC_GPIO_10_I2S0_TX = 7,
} hi_io_func_gpio_10;
找出 PWM 复用功能对应参数为 HI_IO_FUNC_GPIO_10_PWM1_OUT,对应的函数实现为hi_io_set_func(HI_IO_NAME_GPIO_10,HI_IO_FUNC_GPIO_10_PWM1_OUT); 功能为将 GPIO10配置为 PWM 复用。

●hi_u32 hi_pwm_init(hi_pwm_port port);
此函数功能为初始化 PWM。
hi_pwm_port port:对应 PWM 端口,取值范围为 hi_pwm_port 枚举值,枚举类型如下:
typedef enum {
HI_PWM_PORT_PWM0 = 0,
HI_PWM_PORT_PWM1 = 1,
HI_PWM_PORT_PWM2 = 2,
HI_PWM_PORT_PWM3 = 3,
HI_PWM_PORT_PWM4 = 4,
HI_PWM_PORT_PWM5 = 5,
HI_PWM_PORT_MAX
} hi_pwm_port;
不同 IO 口对应的 PWM 端口不同,需选择对应端口。
例如:GPIO_10 的 PWM 端口为 PWM1,对应的实现函数为 hi_pwm_init(HI_PWM_PORT_PWM1);  hi_u32 hi_pwm_set_clock(hi_pwm_clk_source clk_type);
此函数功能为设置 PWM 的时钟。
hi_pwm_clk_source clk_type:时钟源类型,取值范围为 hi_pwm_clk_source 枚举值,枚举类型如
下:
typedef enum {
/*160M 工作时钟*/
PWM_CLK_160M,
/*24M 或 40M 晶体时钟*/
PWM_CLK_XTAL,
/*最大值,不可使用*/
PWM_CLK_MAX
} hi_pwm_clk_source;
例如:选择工作时钟为 PWM 的时钟源,对应的实现函数为 hi_pwm_set_clock(PWM_CLK_160M);

2. 输出 PWM 信号
PWM 输出函数:hi_u32 hi_pwm_start(hi_pwm_port port, hi_u16 duty, hi_u16 freq);
此函数为启动 PWM 信号输出。其中,各参数的含义为:
hi_pwm_port port:PWM 端口号
hi_u16 duty:占空比计数值(此值可自己设置)
hi_u16 freq:分频倍数(此值可自己设置)
信号占空比为:duty/freq,占空比越大,灯越亮。
PWM 频率为:时钟源频率/freq。
例如:调节 GPIO_10 红灯的亮度。时钟源频率为 160M,分频系数为 40000,PWM 频率为160M/40000 = 4000,代码实现如下:
hi_pwm_start(HI_PWM_PORT_PWM1, 1,40000) ;//不亮
hi_pwm_start(HI_PWM_PORT_PWM1, 20000,40000) ;//中等亮度
hi_pwm_start(HI_PWM_PORT_PWM1, 40000,40000) ;//最亮

2021-12-15 11:53 上传
文件大小:
486.11 KB
下载次数:
4
本地下载

16RD supports Paypal , Payment is calculated at the exchange rate of the day. Unable to download please contact 18902843661 (WhatsApp OR wechat number)

关于一牛网在微软浏览器(Microsoft Edge、IE浏览器)警报通告&解决方案!(无法下载直接更换浏览器即可)

*附件为作者发布,与本站无关,如有侵权,请联系客服删除

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

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表