首页 > 其他分享 >AI-Talk开发板之LED

AI-Talk开发板之LED

时间:2024-09-04 17:24:17浏览次数:6  
标签:exmcu led led0 AI cells LED -- gpio Talk

一、说明

AI-Talk开发板上有一颗用户LED,连接在CH32 PA2管脚,低电平亮,高电平灭。

相关电路图如下:

二、工程 

1、创建项目

进入snap/examples/目录,执行创建项目的命令:

lisa zep create
? 选择sample. (`左右键/空格键` 展开文件夹,`回车键` 确定选择)
          → display
          → [display_kscan]
          → [dma_memcpy]
          → [entropy]
          → [exmcu_adc]
          ↓ [exmcu_gpio_led]
          → [exmcu_pwm]
          → [gpio_led]
          → [hwinfo]
          → i2c

选择exmcu_gpio_led,然后确定。此时examples目录下有一个exmcu_gpio_led的工程,目录结构如下:

2、配置文件

prj.conf配置文件中已经打开了GPIO_CSK6_CH32V003的配置:

CONFIG_GPIO_CSK6_CH32V003=y
3、设备树

        设备树文件csk6011a_nano.dts中已经有led0的配置,但是gpio和AI-Talk开发板不一致。这里在项目下创建一个设备树覆盖文件,重新配置led0

在hello_world根目录下创建boards目录,并增加csk6011a_nano.overlay设备树配置文件:

exmcu_gpio_led
├─boards //设备树板型文件
    └─csk6011a_nano.overlay  //设备树配置文件
...

在csk6011a_nano.overlay文件中添加控制 led 的 GPIO 配置和ch32v003的配置,具体内容如下:

#include <zephyr/dt-bindings/adc/adc.h>

/  /*根节点*/
{
   /*定义别名为led0的gpio设备树*/

   aliases {
           led0 = &board_led_0_label;/* led0别名映射到led0设备树node label */
           csk6-exmcu = &csk6_ch32v003;
   };


   leds {
           compatible = "gpio-leds";/* 设置led设备树的ymal绑定文件 */
           board_led_0_label: board_led_0_nodeid { /* node label和node id,皆可自定义命名 */
                   gpios = <&exgpioa 2 GPIO_ACTIVE_LOW>; /* GPIO逻辑电平模式设置 */
                   label = "User LED0"; /* 节点的 label 属性,通过传入device_get_binding()接口可以获取gpio设备实例 */
       };
   };

};

&pinctrl {
        pinctrl_i2c1_scl_default: i2c1_scl_default{
                pinctrls = <I2C1_SCL_GPIOB_09>;
        };

        pinctrl_i2c1_sda_default: i2c1_sda_default{
                pinctrls = <I2C1_SDA_GPIOB_08>;
        };
};

&i2c1 {
        status = "okay";
        pinctrl-0 = <&pinctrl_i2c1_scl_default &pinctrl_i2c1_sda_default>;
        pinctrl-names = "default";

        csk6_ch32v003: csk6_ch32v003@6c {
                /**
                 * Please make sure that the external MCU firmware has been loaded
                 * SCL --> external MCU PC5
                 * SDA --> external MCU PC6
                 */
                compatible = "listenai,csk-i2c-ch32v003";
                reg = <0x6c>;
                status = "okay";
                #address-cells = <1>;
                #size-cells = <0>;

                /* CH32V003-GPIOA */
                exgpioa: gpio@0 {
                        compatible = "listenai,csk-gpio-ch32003-port";
                        reg = <0x00>;
                        status = "okay";
                        ngpios = <8>;
                        #gpio-cells = <2>;
                        gpio-controller;
                        pin_mask = <0x00>;
                };

                /* CH32V003-GPIOB */
                exgpiob: gpio@1 {
                        compatible = "listenai,csk-gpio-ch32003-port";
                        reg = <0x01>;
                        status = "okay";
                        ngpios = <8>;
                        #gpio-cells = <2>;
                        gpio-controller;
                        pin_mask = <0x00>;
                };

                /* CH32V003-GPIOC */
                exgpioc: gpio@2 {
                        compatible = "listenai,csk-gpio-ch32003-port";
                        reg = <0x02>;
                        status = "okay";
                        ngpios = <8>;
                        #gpio-cells = <2>;
                        gpio-controller;
                        pin_mask = <0x00>;
                };

                /* CH32V003-GPIOD */
                exgpiod: gpio@3 {
                        compatible = "listenai,csk-gpio-ch32003-port";
                        reg = <0x03>;
                        status = "okay";
                        ngpios = <8>;
                        #gpio-cells = <2>;
                        gpio-controller;
                        pin_mask = <0x00>;
                };

                exadc: adc@4 {
                        /**
                         * external adc channel map
                         *
                         * CH0 --> PA2
                         * CH1 --> PA1
                         * CH2 --> PC4
                         * CH3 --> PD2
                         * CH4 --> PD3
                         * CH5 --> PD5
                         * CH6 --> PD6
                         * CH7 --> PD4
                         *
                         */

                        compatible = "listenai,csk-adc-ch32v003";
                        reg = <0x4>;
                        status = "okay";
                        #io-channel-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        channel@2 {
                                reg = <2>;
                                zephyr,gain = "ADC_GAIN_1";
                                zephyr,reference = "ADC_REF_INTERNAL";
                                zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
                                zephyr,resolution = <10>;
                        };
                };

                expwm: pwm-controller@5 {
                        compatible = "listenai,csk-ch32v003-pwm";
                        reg = <0x5>;
                        status = "okay";
                        clock-prescaler = <480>;
                        clock-frequency = <48000000>;
                        #pwm-cells = <4>;
                };
        };
};
4、 代码

不使用main.c的代码,重新编写代码:

#include <zephyr/zephyr.h>
#include <zephyr/drivers/gpio.h>

/* 1000 msec = 1 sec */
#define SLEEP_TIME_MS   1000

/* 通过别名获取 "led0" 设备树 node id */
#define LED0_NODE DT_ALIAS(led0)

 /* 通过 node id 获取 led0 设备树信息 */
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);

void main(void)
{
    printk("Hello World! %s\n", CONFIG_BOARD);

    int ret;
    /* 检查硬件设备是否就绪 */
    if (!device_is_ready(led.port)) {
        return;
    }

    /* 将GPIO配置为输出并将其初始化为逻辑电平1 */
    ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
    if (ret < 0) {
        return;
    }

    while (1) {
        /* GPIO电平反转控制 */
        ret = gpio_pin_toggle_dt(&led);
        if (ret < 0) {
            return;
        }
        k_msleep(SLEEP_TIME_MS);
    }
}

三、编译

在hello_world目录下执行编译命令:

lisa zep build -b csk6011a_nano

四、运行

连接AI-Talk开发板的调试接口,PC端运行终端软件可以接收到如下日志:

[00:00:00.000,000] <inf> csk6_exmcu_i2c: exmcu addr:0x6C
[00:00:00.046,000] <inf> csk6_exmcu_i2c: exmcu info, chip type:ch32v003, ver:1.3
*** Booting Zephyr OS build zephyr-v3.4.0-46-gb8fcc47cc045 ***
*** ListenAI CSK SDK Version: 2.0.0.0-f097b7f9df ***
Hello World! csk6011a_nano

开发板上LED1会一致闪烁,频率0.5Hz。

标签:exmcu,led,led0,AI,cells,LED,--,gpio,Talk
From: https://blog.csdn.net/professionalmcu/article/details/141885395

相关文章

  • 体制内宣传标语怎么写?6个AI工具帮你轻松解决~
    1、笔墨写作笔墨写作-领先的写作智能AI创作平台|官方首页笔墨写作是一款专注于各种文体写作的智能AI创作平台,提供全面的写作、校对、润色、资料库及模板服务。无论是公职人员、事业单位、国企人员、还是医院、学校等机构,笔墨写作都能帮助您高效完成述职报告、工作总结、心......
  • 抑郁症困扰?香港团队利用AI并通过观察你的眼睛来帮助你
    在今年七月召开的中国共产党第三次全体会议上,国家确定了经济政策的长期方向,并将人工智能和生物医药等战略性行业列为重点目标。传统企业也将被鼓励通过技术实现转型。《南华早报》探讨了香港新兴科学家们的创新成果,这些科学家们已经在崭露头角,甚至可能成为像大疆和商汤这样的科......
  • 利用生成式AI从无序数据中获取洞见
    使用生成式AI分析混乱数据的最佳实践检查表本文分享了一些我们公司使用生成式AI分析数据以更有效地进行运营的一些最佳实践。虽然花了一些时间,但我终于获得了Salesforce的市场、法律、安全和公关团队的批准,得以发表这篇文章。希望这能帮助你加速数据分析。本文中的所有图表都......
  • 我是一个连续创业者——为什么我认为AI正在带来副业的黄金时代
    本周,EdelmanData和三星移动发布的新研究表明,我们即将进入“AI驱动副业”的新时代。这项研究收集了来自美国、法国、德国、英国和韩国的数千名Z世代的在线调查反馈,发现大多数人对当前的工作条件感到不满意,这不禁让人意外。这项调查显示,大约70%的人对现状不满,考虑使用AI作为他......
  • AI情感助手在相亲交友中的应用
     随着人工智能技术的不断进步,AI情感助手在相亲交友领域的应用越来越广泛。作为程序员,我们深知技术的力量是如何重塑我们的日常生活,特别是在相亲交友这样一个高度依赖于人与人之间沟通的场景下。相亲交友不再仅仅是简单的信息匹配,而是向着更加人性化、智能化的方向发展。AI情感助手......
  • AI绘画Stable Diffusion:从新手到高手,漫画小说创收不是梦,几条视频变现几k(Ai工具+教程)
    许多人都被大量的小说推文项目所淹没,看着别人收益高、账号做得好,很多人讲述这个项目时,要么不透露具体AI工具名称,要么不提供推文授权渠道,让人无从下手,干着急。今天,向阳将带给大家一期全新的纯AI制作小说推文项目,这个新玩法将让你轻松掌握保姆级的详细教程。在本文的结尾......
  • 从安卓开发到AI产品经理——我的AI绘画之旅
    大家好,我是一名有着多年安卓开发经验的程序员。在日复一日的编码生活中,我对AI行业产生了浓厚的兴趣。于是,我决定转行成为一名AI产品经理。在这个过程中,我通过学习AI绘画工具初步了解了AI行业,下面我将分享我的学习经历和学习资料,希望对同样想转行的朋友们有所帮助。这里给......
  • 【HuggingFace Transformers】OpenAIGPTModel源码解析
    OpenAIGPTModel源码解析1.GPT介绍2.OpenAIGPTModel类源码解析说到ChatGPT,大家可能都使用过吧。2022年,ChatGPT的推出引发了广泛的关注和讨论。这款对话生成模型不仅具备了强大的语言理解和生成能力,还能进行非常自然的对话,给用户带来了全新的互动体验。然而,ChatGPT......
  • Air780E低功耗4G模组硬件设计手册01
    Air780E是一款基于移芯EC618平台设计的LTECat1无线通信模组。支持FDD-LTE/TDD-LTE的4G远距离无线传输技术。另外,模组提供了USB/UART/I2C等通用接口满足IoT行业的各种应用诉求。本文将主要介绍Air780E的应用接口部分。一、主要性能Air780E模块功能框图:模块型号列表:模块主要性能:*注:......
  • 开源网安引领AIGC+开发安全,智能防护铸就软件安全新高度
    近日,国内网络安全领域知名媒体数说安全正式发布了《2024年中国网络安全市场100强》和《2024年中国网络安全十大创新方向》。开源网安凭借在市场表现力、资源支持力以及产品在AI方向的创新力上的优秀表现成功入选百强榜单,并被评为“AIGC+开发安全”典型厂商。开源网安已对全线软件安......