【祖传点灯】安信可Ai-M61-32S点灯+FreeRTOS+LED测试

[复制链接]
查看2541 | 回复13 | 2024-5-12 23:01:58 | 显示全部楼层 |阅读模式
本帖最后由 mfan 于 2024-5-13 09:05 编辑

安信可Ai-Thinker Ai-M61系列模组基于博流的RISC-V架构的BL618 芯片,包括Ai-M61-01、Ai-M61-32S、Ai-M61-32SU三款。模组支持 Wi-Fi 802.11b/g/n/ax 协议、BLE 协议和Thread协议。
模组的基本性能参数为:
主频可达 320M,532KB SRAM,128KB ROM,4Kb eFuse;
最大发射功率16-22dBm,灵敏度-98dBm,最高速率229.4 Mbps;
包含camera、MJPEG、I2C、SPI、UART等众多接口,能广泛用于物联网领域;
Ai-M61-32S模组外观如下图所示:
模组外观.JPG

本次申请拿到的是基于该模组的开发板NodeMcu-AI-M61-32S开发板,IO口引出到插针,并带有一个RGB灯、两个独立LED灯,默认的固件是安信可的AT固件,简单测试了下,基本上能满足大部分的功能需求。注意,由于AT指令是通用的,所以如果需要驱动外设,需要先进行IO映射:
AT+SYSIOMAP=40,NC,NC,NC,0,1,16,17,12,14,15,18,19,10,13,11,3,20,4,5,6,7,8,9,NC,NC,23,2,24,28,26,25,27,29,30,31,NC,NC,32,33,34
之后就能使用模组上的引脚索引号驱动IO口了。
相关的AT指令可以参照官网的介绍:
AT指令.JPG



本次主要是通过SDK进行二次开发,因此需要自行搭建开发环境并开发代码。
一、环境搭建
官方提供了 linux和Windows两种开发环境,之前已经在hp t-505瘦终端上安装好deepin系统,因此本次在linux上来开发。
由于之前就安装好了git工具,因此直接git命令下载即可。
1、下载开发库(如果网络不好的话,可以从gitee上下载,即把github.com换成gitee.com)
下载AiPi-Open-Kits库,注意需要切换到master分支
git clone -b master https://github.com/Ai-Thinker-Open/AiPi-Open-Kits.git
工程文件.JPG
注意,由于该库还依赖aithinker_Ai-M6X_SDK,因此进入AiPi-Open-Kits文件夹并下载子模块。
cd AiPi-Open-Kits/
git submodule init
git submodule update
下载完成后,再次进入aithinker_Ai-M6X_SDK文件夹,该库依赖的工具链需要下载,可以像前边的那样,用git命令下载,也可以直接用官方提供的shell脚本
cd aithinker_Ai-M6X_SDK/
执行
git submodule init
git submodule update
或者
chmod +x ./install.sh
./install.sh
2、设置工具链位置,可以直接使用aithinker_Ai-M6X_SDK中的脚本:export.sh,该脚本中会把工具链的位置写入当前环境变量中,但只对本shell有用,重新开shell窗口后需要再次运行该脚本,这样也避免污染原来的开发环境。
chmod +x  ./export.sh
source ./export.sh
设置环境变量.JPG

如果看到上边的打印,说明环境已经搭建完毕,可以进一步开发了。

二、编译及烧录
AiPi-Open-Kits/Project_basic文件夹中,可以基于该文件夹进行测试代码开发。注意,本工程基于FreeRTOS。
NodeMcu-AI-M61-32S板的RGB灯使用GPIO12、GPIO14、GPIO15,因此,可以分别创建一个任务,用于3种颜色LED的不同频率的闪烁。
直接在main.c中添加如下测试代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <FreeRTOS.h>
#include <task.h>
#include "board.h"
#include "log.h"
#include "bflb_gpio.h"


static TaskHandle_t BlueLedTask_handle;
static TaskHandle_t RedLedTask_handle;
static TaskHandle_t GreenLedTask_handle;


static void BlueLedTask(void *pvParameters)
{
    struct bflb_device_s *gpio = bflb_device_get_by_name("gpio");
    bflb_gpio_init(gpio, GPIO_PIN_15, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);

    while (1)
    {
        bflb_gpio_set(gpio, GPIO_PIN_15);
        vTaskDelay(1000);
        bflb_gpio_reset(gpio, GPIO_PIN_15);
        vTaskDelay(1000);
    }
    vTaskDelete(NULL);
}

static void RedLedTask(void *pvParameters)
{
    struct bflb_device_s *gpio = bflb_device_get_by_name("gpio");
    printf("gpio output\r\n");
    bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
    while (1)
    {
        bflb_gpio_set(gpio, GPIO_PIN_12);
        vTaskDelay(1000);
        bflb_gpio_reset(gpio, GPIO_PIN_12);
        vTaskDelay(100);
    }
    vTaskDelete(NULL);
}

static void GreenLedTask(void *pvParameters)
{
    struct bflb_device_s *gpio = bflb_device_get_by_name("gpio");
    bflb_gpio_init(gpio, GPIO_PIN_14, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);

    while (1)
    {
        bflb_gpio_set(gpio, GPIO_PIN_14);
        vTaskDelay(200);
        bflb_gpio_reset(gpio, GPIO_PIN_14);
        vTaskDelay(1000);
    }
    vTaskDelete(NULL);
}

int main(void)
{
    board_init();
    configASSERT((configMAX_PRIORITIES > 4));
    LOG_I("[OS] Starting blue led task...\r\n");
    xTaskCreate(BlueLedTask, (char *)"BlueLedTask", 512, NULL, configMAX_PRIORITIES - 2, &BlueLedTask_handle);
    LOG_I("[OS] Starting red led task...\r\n");
    xTaskCreate(RedLedTask, (char *)"RedLedTask", 512, NULL, configMAX_PRIORITIES - 3, &RedLedTask_handle);
    LOG_I("[OS] Starting green led task...\r\n");
    xTaskCreate(GreenLedTask, (char *)"GreenLedTask", 512, NULL, configMAX_PRIORITIES - 3, &GreenLedTask_handle);
    vTaskStartScheduler();
    while (1)
    {
    }
}

把NodeMcu-AI-M61-32S板连接到瘦终端,找到识别到的串口设备,如下图所示为ttyUSB0
查看usb设备.JPG

直接在Project_basic目录下运行命令:make flash COM=/dev/ttyUSB0
等待编译成功,提示进入烧录模式:先长按io2在短按rst按键,等待烧录成功。
编译烧录成功.JPG
此外,Windows上可以使用安信可万能调试助手里边的打包的博流烧录工具(Tools\bl602_flash_download_tool)
烧录工具.JPG

把板子重新连接到Windows系统下,打开串口助手,波特率2000000,无奇偶检验位,8个数据位,1个停止位,可以看到模块上电后,正常创建3个任务
任务启动.JPG

RGB灯也开始按照自己的频率进行闪烁。
lv_0_20240512223525.gif




















设置环境变量.JPG
回复

使用道具 举报

lazy | 2024-5-12 23:45:35 | 显示全部楼层
真不错
回复

使用道具 举报

hrqwe | 2024-5-12 23:50:30 | 显示全部楼层
很详细呀
日拱一卒,功不唐捐
回复

使用道具 举报

WT_0213 | 2024-5-13 09:09:50 | 显示全部楼层
很清爽的感觉
回复 支持 反对

使用道具 举报

1055173307 | 2024-5-13 11:12:27 | 显示全部楼层
回复

使用道具 举报

noonezero | 2024-5-27 13:25:04 | 显示全部楼层
恭喜点灯
回复

使用道具 举报

st780206 | 2024-6-4 19:03:56 | 显示全部楼层
很有帮助
回复

使用道具 举报

楚华 | 2024-6-6 19:07:14 | 显示全部楼层
完美
回复

使用道具 举报

wukong50 | 2024-6-7 13:12:45 | 显示全部楼层
入坑了
回复

使用道具 举报

物联网 | 2024-6-23 15:19:31 | 显示全部楼层
作业已完成
回复 支持 反对

使用道具 举报

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

本版积分规则