AI-Talk开发板之wifi scan

news2024/11/20 7:00:08

一、说明

  AI-Talk开发板使用ESP32-C3扩展WIFI通信功能,与CSK6011A通过SPI接口通信。

与处理器的信号连接:

 ESP32-C3需要烧录hosted固件,参考:AI-Talk开发板更新ESP32固件_esp32 固件-CSDN博客

二、工程

1、创建项目

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

lisa zep create

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

2、设备树

        这个例程是基于csk6011a_c3_nano硬件平台,设备树文件为snap/lisa/x1/.listenai/csk-sdk-v2/csk/boards/arm/csk6011a_c3_nano/csk6011a_c3_nano.dts,但是硬件配置和AI-Talk开发板不一致。这里在项目下创建一个设备树覆盖文件,重新配置SPI、leds、gpio_keys。

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

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

在csk6011a_c3_nano.overlay文件中添加spi0节点的配置,具体内容如下:

/*
 * Copyright (c) 2023 Anhui(Shenzhen) Listenai Co., Ltd.
 *
 * SPDX-License-Identifier: Apache-2.0
 */
 
#include <zephyr/dt-bindings/adc/adc.h>

/ {
        aliases {
                csk6-exmcu = &csk6_ch32v003;
        };
        
        leds {
                compatible = "gpio-leds";
                green_led: led1 {
                        gpios = <&exgpioa 2 GPIO_ACTIVE_LOW>;
                };
        };
                
        gpio_keys {
                compatible = "gpio-keys";
                user_button_0: button_0 {
                        gpios = <&gpiob 0 0>;
                };
        };                        
};
 
&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>;
  };

	pinctrl_spi0_sclk_default: spi0_sclk_default {
		pinctrls = <SPI0_CLK_GPIOB_05>;
	};
  pinctrl_spi0_miso_default: spi0_miso_default{
          pinctrls = <SPI0_MISO_GPIOB_03>;
  }; 
	pinctrl_spi0_mosi_default: spi0_mosi_default {
		pinctrls = <SPI0_MOSI_GPIOB_02>;
	};
	pinctrl_spi0_cs_default: spi0_cs_default {
		pinctrls = <SPI0_CS_N_GPIOB_04>;
	};

};

&spi0 {
  pinctrl-0 = <&pinctrl_spi0_sclk_default &pinctrl_spi0_mosi_default &pinctrl_spi0_miso_default &pinctrl_spi0_cs_default>;
  pinctrl-names = "default";
  status = "okay";
  
	wifi_module: esp32c3@0 {
    compatible = "espressif,esp-hosted";
    spi-max-frequency = <25000000>;
  	reg = <0>;
    dataready-gpios = <&gpiob 6 0>;
    handshake-gpios = <&gpiob 1 0>;
    reset-gpios = <&exgpioc 3 0>;
    status = "okay";
 };
};

&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>;
          };
  };

};

由于snap/lisa/x1/.listenai/csk-sdk-v2/csk/boards/arm/csk6011a_nano/csk6011a_c3_nano.dts文件中定义了wifi_module,与csk6011a_c3_nano.overlay中定义的wifi_module冲突了,将csk6011a_c3_nano.dts中wifi_module相关的注释屏蔽掉:

&spi1 {
	pinctrl-0 = <&pinctrl_spi1_sclk_default &pinctrl_spi1_mosi_default &pinctrl_spi1_miso_default &pinctrl_spi1_cs_default>; 
        pinctrl-names = "default";
        status = "okay";
//        wifi_module: esp32c3@0 {
//                compatible = "espressif,esp-hosted";
//		spi-max-frequency = <25000000>;
//		reg = <0>;
//                dataready-gpios = <&gpioa 11 0>;
//                handshake-gpios = <&gpioa 16 0>;
//                reset-gpios = <&gpioa 10 0>;
//                status = "okay";
//        };
};
3、配置文件

prj.conf文件打开GPIO_CSK6_CH32V003的配置:

CONFIG_GPIO_CSK6_CH32V003=y
4、代码

代码不做修改。

三、编译

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

lisa zep build -b csk6011a_c3_nano

编译生成的固件:examples/wifi_scan_ap/build/zephyr/zephyr.bin  

四、烧录 

固件的烧录及查看运行日志参照:AI-Talk开发板CSK6固件烧录-CSDN博客

五、运行

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

[00:00:00.000,000] <inf> csk6_spi: SPI REG ADDR:0x45500000
[00:00:00.000,000] <inf> csk6_spi: SPI REG ADDR:0x45400000
[00:00:00.000,000] <inf> csk6_exmcu_i2c: exmcu addr:0x6C
[00:00:00.040,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 ***
[00:00:00.084,000] <dbg> csk_wifi: wifi_obj_set_sm: (97)STA_SM: current[WIFI_SM_ON_STARTUP], next[WIFI_SM_ON_STARTUP]
Firmware Version: 0.4, commit: 77c953e
App EVENT: ESP INIT
[00:00:02.654,000] <dbg> csk_wifi: wifi_obj_set_sm: (97)STA_SM: current[WIFI_SM_ON_STARTUP], next[WIFI_SM_STARTUP_DONE]
[00:00:02.665,000] <dbg> csk_wifi: wifi_obj_set_sm: (97)STA_SM: current[WIFI_SM_STARTUP_DONE], next[WIFI_SM_STA_ON_SCAN]
[00:00:04.555,000] <dbg> csk_wifi: wifi_obj_set_sm: (97)STA_SM: current[WIFI_SM_STA_ON_SCAN], next[WIFI_SM_STA_SCAN_DONE]
[00:00:04.555,000] <dbg> csk_wifi: wifi_command_handler: wifi_scan_list scan_list.count = 11
scan done
--------------------------------------------Scan AP list---------------------------------------------
|ssid: CMCC-2106                         | bssid: 90:76:9f:23:a3:58      | channel: 1    | rssi: -57|
|ssid:                                   | bssid: 92:76:9f:43:a3:58      | channel: 1    | rssi: -58|
|ssid: CMCC-5EnZ                         | bssid: 48:ca:c6:82:5f:84      | channel: 11   | rssi: -68|
|ssid: 1-1-2206                          | bssid: 78:60:5b:f7:bc:ca      | channel: 11   | rssi: -71|
|ssid:                                   | bssid: 82:60:5b:f7:bc:ca      | channel: 11   | rssi: -71|
|ssid: CMCC-QzDF                         | bssid: 94:28:6f:bb:10:9f      | channel: 6    | rssi: -78|
|ssid:                                   | bssid: 96:28:6f:9b:10:9f      | channel: 6    | rssi: -78|
|ssid: TP-LINK_5031                      | bssid: 4c:10:d5:5a:50:31      | channel: 1    | rssi: -81|
|ssid: TPGuest_5031                      | bssid: 4e:10:d5:5b:50:31      | channel: 1    | rssi: -81|
|ssid: Xiaomi_B953                       | bssid: a4:39:b3:89:b9:54      | channel: 1    | rssi: -82|
|ssid:                                   | bssid: 96:28:6f:1b:3e:cb      | channel: 6    | rssi: -85|
-----------------------------------------------------------------------------------------------------
[00:00:05.555,000] <dbg> csk_wifi: wifi_obj_set_sm: (97)STA_SM: current[WIFI_SM_STA_SCAN_DONE], next[WIFI_SM_STA_ON_SCAN]
[00:00:07.444,000] <dbg> csk_wifi: wifi_obj_set_sm: (97)STA_SM: current[WIFI_SM_STA_ON_SCAN], next[WIFI_SM_STA_SCAN_DONE]
[00:00:07.444,000] <dbg> csk_wifi: wifi_command_handler: wifi_scan_list scan_list.count = 11
scan done
--------------------------------------------Scan AP list---------------------------------------------
|ssid: CMCC-2106                         | bssid: 90:76:9f:23:a3:58      | channel: 1    | rssi: -58|
|ssid:                                   | bssid: 92:76:9f:43:a3:58      | channel: 1    | rssi: -58|
|ssid:                                   | bssid: 82:60:5b:f7:bc:ca      | channel: 11   | rssi: -71|
|ssid:                                   | bssid: 96:28:6f:9b:10:9f      | channel: 6    | rssi: -79|
|ssid: TPGuest_5031                      | bssid: 4e:10:d5:5b:50:31      | channel: 1    | rssi: -81|
|ssid: Xiaomi_B953                       | bssid: a4:39:b3:89:b9:54      | channel: 1    | rssi: -83|
|ssid: CMCC-dGN7                         | bssid: 94:28:6f:1b:3e:cb      | channel: 6    | rssi: -84|
|ssid:                                   | bssid: 96:28:6f:1b:3e:cb      | channel: 6    | rssi: -84|
|ssid:                                   | bssid: f6:f6:47:91:c3:7a      | channel: 6    | rssi: -92|
|ssid: CMCC-Uw9e                         | bssid: 80:3e:48:02:81:6c      | channel: 11   | rssi: -92|
|ssid: CMCC-2901                         | bssid: f4:d9:c6:00:6f:6a      | channel: 1    | rssi: -93|
-----------------------------------------------------------------------------------------------------

会不断的扫描周围的路由器,并且显示信号强度。 

六、遇到问题

        由于焊接错误导致CSK6011A的19脚(RST)和20脚(GPIOB_05)短路,造成只要配置SPI0相关的GPIOB_02、GPIOB_03、GPIOB_04、GPIOB_05,芯片就无法启动,并且VDD_CORE的电压为0.54V,正常应该为0.95V。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2166087.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地编译安装|编译安装最新版postgis3.4.3版本指南

一、本地编译安装步骤介绍 本地编译&#xff0c;指的是在本地环境编译安装某个软件&#xff0c;例如&#xff0c;本文所述的最新版postgis3.4.3&#xff0c;本地是什么cpu架构&#xff0c;编译完成后&#xff0c;编译产出物就可以在其它的同cpu架构的服务器上直接适用了&#…

关于JAVA中Scanner和sout读取超时问题

1.Scanner与System.out为什么慢 Scanner读取速度慢的原因&#xff1a; 在ACM模式下&#xff0c;输入数据和输出数据时&#xff0c;他会将数据放在一个文件里面 在new上一个Scanner时&#xff0c;去调用一个next&#xff08;&#xff09;方法&#xff0c;他会去访问IO设备&…

【mac开发入坑指南】能让你的终端好用一万倍的神仙组合iTerm2 + oh-my-zsh

介绍 iTerm2 iTerm2是默认终端的替代品&#xff0c;也是目前Mac系统下最好用的终端工具&#xff0c;集颜值和效率于一身。 Oh-My-Zsh Oh My Zsh 是一款社区驱动的命令行工具&#xff0c;正如它的主页上说的&#xff0c;Oh My Zsh 是一种生活方式。 它基于Zsh 命令行&#xff0c…

docker-文件复制(docker ps:用于在Docker主机和容器之间拷贝文件或目录)

文章目录 1、把宿主机的文件复制到容器内部1.1、查询 宿主机 root 下的文件1.2、docker cp /root/anaconda-ks.cfg spzx-redis:/root1.3、查看 spzx-redis 容器 中/root目录下是否有 anaconda-ks.cfg 文件 2、把容器中的文件 复制 到宿主机中2.1、查看 spzx-redis 容器 / 下的文…

怎么批量制作文本或链接静态码?批量静态码在线的生成技巧

怎么将文本或者链接做成静态二维码呢&#xff1f;有很多的场景都会使用静态二维码&#xff0c;在需要制作大量静态二维码时&#xff0c;有什么方法能够快速提高二维码制作效率呢&#xff1f;在网上能够找到在线二维码生成器的功能来快速生成二维码&#xff0c;下面通过这篇文章…

【shell脚本8】Shell脚本学习--其他

目录 ​编辑 Shell输入输出重定向 重定向深入讲解 Here Document Shell输入输出重定向 Unix 命令默认从标准输入设备(stdin)获取输入&#xff0c;将结果输出到标准输出设备(stdout)显示。一般情况下&#xff0c;标准输入设备就是键盘&#xff0c;标准输出设备就是终端&…

JAVA-StringBuilder和StringBuffer

一、认识String类 1.认识 String在Java中是字符串类型&#xff0c;但与其他类型不同。它是一个类&#xff0c;可以创建对象的类。与int、char等自待类型有些许不同。但它仍然是java提供的一种类型。 类中有4个属性&#xff0c;这里主要认识一下value属性。它是实际存放字符串…

AI 赋能大模型:从 ChatGPT 到国产大模型的角逐与发展契机

在当今科技飞速发展的时代&#xff0c;大模型作为人工智能领域的关键技术&#xff0c;正引发着深刻的变革。它们在自然语言处理、计算机视觉、语音识别等众多领域展现出了惊人的潜力&#xff0c;为各行各业带来了前所未有的机遇和挑战。本文将深入剖析大模型的技术原理、市场态…

字符串的join和os.path.join()

>>> key "".join("I love China.")>>> keyI love China.>>> key.join("--xwf")-I love China.-I love China.xI love China.wI love China.f为什么执行key.join("--xwf")的结果不是“I love China.--xwf”…

鄂尔多斯市鄂托克旗巴音乌苏六保煤矿5MW分布式光伏项目案例分析

摘 要&#xff1a;分布式光伏发电利用太阳能光伏板&#xff0c;分散布置在各区域&#xff0c;通过小规模、模块化并网或独立使用。其特点为就近发电、并网、转换和使用。技术进步和政策支持降低了光伏组件成本&#xff0c;推动了分布式光伏监控系统在多个领域的广泛应用。在全球…

【学习笔记】UWB技术定位原理

UWB技术还没有完全普及&#xff0c;却在慢慢兴起&#xff0c;一旦爆发&#xff0c;势不可挡也。 01-什么是UWB&#xff1f; UWB&#xff08;Ultra Wide Band&#xff09;是一种无载波通信技术&#xff0c;UWB不使用载波&#xff0c;而是使用短的能量脉冲序列&#xff0c;并通…

TikTok多语言商城系统源码+落地页 附搭建教程

TikTok多语言商城系统源码落地页 附搭建教程 环境 nginx php7.4.33 redis5.0.8 Memcached 1.6.6 mysql5.6 phpMyAdmin 伪静态 location / { try_files $uri $uri/ /index.php?$query_string; } 源码下载&#xff1a;https://download.csdn.net/download/m0_660477…

CVPR2021 安全AI挑战者计划第六期赛道一第二名方案分享 (UM-SIAT队)

关联比赛: CVPR2021 安全AI挑战者计划第六期&#xff1a;防御模型的白盒对抗攻击 CVPR2021 安全AI挑战者计划第六期赛道一第二名方案分享 &#xff08;UM-SIAT队&#xff09; 1.赛题简介 1.比赛通过15个防御模型测试攻击算法&#xff0c;其中包括13个在CIFAR-10上训练的模型…

单刀单掷(SPST)及单刀双掷(SPDT)模拟开关

单刀单掷(SPST)及单刀双掷(SPDT)模拟开关是对继电器元件的一种模拟简化, 本质上还是一种用开关控制的开关. 我们先从单刀双掷(SPDT)模拟开关与继电器的一个对比中了解其特性. 单刀双掷(SPDT)模拟开关 通过菜单 绘制--有源集成电路--添加模拟开关(SPDT) 可以添加一个单刀双掷…

我与Linux的爱恋:进程创建|终止

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;Linux的学习 ​ 文章目录 一、进程创建**fork函数**写时拷贝 二、进程终止进程退出的常见方法 一、进程创建 fork函数 在Linux中fork函数是非常重要的函数&#xff0c;它从已存在进程…

黑马智数Day4-2

渲染基础Table列表 封装获取企业列表接口 export function getEnterpriseListAPI(params) {return request({url: /park/enterprise,params}) } 组件中获取数据 <script> import { getEnterpriseListAPI } from /apis/enterprise export default {name: Building,dat…

C++ | Leetcode C++题解之第435题无重叠区间

题目&#xff1a; 题解&#xff1a; class Solution { public:int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.empty()) {return 0;}sort(intervals.begin(), intervals.end(), [](const auto& u, const auto& v) {retur…

直播平台美颜功能开发方案:基于视频美颜SDK的集成详解

本篇文章&#xff0c;小编将于大家共同探究视频美颜SDK的美颜功能开发方案&#xff0c;帮助开发者深入理解其集成过程及关键技术。 一、美颜功能的重要性 在竞争激烈的直播市场中&#xff0c;直播平台如何提升用户体验至关重要。美颜功能不仅能够改善主播的形象&#xff0c;提…

桌面专业版【查看MAC和ip地址】

UOS统信查看MAC和ip地址的方法。 文章目录 查看方法一、图形化界面查看二、命令查看 查看方法 一、图形化界面查看 打开控制中心-网络-网络详情中-Mac地址就是您电脑的mac地址&#xff0c;IPV4就是您电脑的ip地址。 二、命令查看 桌面右键选择在终端中打开&#xff0c;输入i…

9.25度小满一面

1.map的底层 2.unorder_map哈希表有自己实现过吗&#xff1f;哈希冲突 3.poll和epoll和select的优缺点、 4.线程同步机制是用来做什么的? 5.五子棋项目问题-- 算法题: 6.LeetCode.重排链表 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0…