【祖传点灯】安信可Ai-M61-32S 呼吸灯+墨水屏

[复制链接]
查看1282 | 回复13 | 2024-5-10 22:35:48 | 显示全部楼层 |阅读模式
本帖最后由 foxbox 于 2024-5-13 18:15 编辑

Git安装下载地址:Git - 下载 (git-scm.com)
安装完成后就可以在“开始”看到刚刚安装的git了
{4DA015B2-C567-46f5-A699-26B709AB5DDF}.png

克隆仓库
仓库地址https://github.com/Ai-Thinker-Open/AiPi-Open-Kits
打开powershell,新建一个文件夹用于存储SDK源码,然后cd进入目录
执行命令,将源码从Gitee拉取到本地:
  1. git clone <https://gitee.com/Ai-Thinker-Open/AiPi-Open-Kits.git> -b master
复制代码

{3A9DCA94-83E8-417c-876F-0EBCB8527F45}.png

当出现done后代表克隆完成
{6509082D-201F-4bd4-9758-F82CABEC2E37}.png

拉取 M61 的 SDK 子模块
执行命令,进入 AiPi-Open-Kits/ 目录:
  1. cd AiPi-Open-Kits/
复制代码

{866E1E40-4E49-4fd8-A2BC-CB2F3275DDF3}.png

执行以下命令以初始化并更新子模块:
  1. git submodule init
  2. git submodule update
复制代码

{D90AE73E-6359-4244-AFC8-3A4427BD8AF8}.png

拉取 M61 SDK 中的子模块
拉取文件输入如下命令
  1. cd aithinker_Ai-M6X_SDK/
  2. git submodule init
  3. git submodule update
复制代码

{595C0C97-3F7A-43d8-A8C2-361A54D11A5B}.png

克隆工具链
完成后,输入如下指令,克隆适用 Windows 的编译工具链
  1. git clone <https://gitee.com/bouffalolab/toolchain_gcc_t-head_windows.git> -b master
复制代码

添加系统环境变量
按照以下步骤进行:
  • 在计算机的搜索栏中输入“环境变量”并打开“编辑系统环境变量”。
  • 在弹出的窗口中,点击“环境变量”按钮。
  • 在“系统变量”区域,找到并双击“Path”变量。
  • 点击“新建”,然后输入你的编译工具链的路径。
  1. aithinker_Ai-M6X_SDK\\\\toolchain_gcc_t-head_windows\\\\bin

  2. aithinker_Ai-M6X_SDK\\\\tools\\\\make

  3. aithinker_Ai-M6X_SDK\\\\tools\\\\ninja
复制代码

  • 确认并点击“确定”关闭所有窗口。
{258EF3C1-8DFF-4173-9973-94F0E9CBD381}.png

为了验证系统环境变量是否配置成功,请在命令行中运行以下命令:
  1. make -v
  2. riscv64-unknown-elf-gcc -v
复制代码

{E31A9955-9E8F-4cba-B0E0-30FEC2AF4C9C}.png


                               
登录/注册后可看大图


开始尝试点灯
使用vscode打开aithinker_Ai-M6X_SDK\examples\peripherals\gpio\gpio_input_output文件夹
通过文档可得知开发板上的RGB灯的IO

RGB 灯(红色灯接 IO12,绿色灯接 IO14,蓝色灯接 IO15,高电平有效)
QQ截图20240510215009.png

代码
  1. #include "bflb_gpio.h"
  2. #include "bflb_mtimer.h"
  3. #include "bflb_pwm_v2.h"
  4. #include "bflb_clock.h"
  5. #include "board.h"
  6. #include "bl616_glb.h"

  7. struct bflb_device_s *gpio;  // GPIO设备指针
  8. struct bflb_device_s *pwm;   // PWM设备指针
  9. uint8_t rgb_pwmchs[3] = {0};  // 用于存储R、G、B的PWM通道数组
  10. uint16_t rgb_pwm = 0;         // 用于调整PWM阈值的变量

  11. int main(void)
  12. {
  13.     board_init();  // 初始化开发板
  14.     gpio = bflb_device_get_by_name("gpio");  // 获取GPIO设备
  15.     pwm = bflb_device_get_by_name("pwm_v2_0");  // 获取PWM设备

  16.     // 初始化GPIO引脚用于PWM功能
  17.     bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_FLOAT | GPIO_SMT_EN | GPIO_DRV_1); // 红色
  18.     bflb_gpio_init(gpio, GPIO_PIN_14, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_FLOAT | GPIO_SMT_EN | GPIO_DRV_1); // 绿色
  19.     bflb_gpio_init(gpio, GPIO_PIN_15, GPIO_FUNC_PWM0 | GPIO_ALTERNATE | GPIO_FLOAT | GPIO_SMT_EN | GPIO_DRV_1); // 蓝色

  20.     // 配置PWM
  21.     struct bflb_pwm_v2_config_s cfg = {
  22.         .clk_source = BFLB_SYSTEM_XCLK,
  23.         .clk_div = 40,
  24.         .period = 2000,  // 将周期设置为2000,以便更精细地控制亮度
  25.     };
  26.     bflb_pwm_v2_init(pwm, &cfg);

  27.     // 启动PWM通道
  28.     bflb_pwm_v2_channel_positive_start(pwm, PWM_CH0);  // 红色
  29.     bflb_pwm_v2_channel_positive_start(pwm, PWM_CH2);  // 绿色
  30.     bflb_pwm_v2_channel_positive_start(pwm, PWM_CH3);  // 蓝色
  31.     bflb_pwm_v2_start(pwm);

  32.     rgb_pwmchs[0] = PWM_CH0;
  33.     rgb_pwmchs[1] = PWM_CH2;
  34.     rgb_pwmchs[2] = PWM_CH3;

  35.     uint8_t color_index = 0;  // 用于循环显示颜色

  36.     while (1) {
  37.         for (color_index = 0; color_index < 3; color_index++) {
  38.             for (rgb_pwm = 0; rgb_pwm <= 2000; rgb_pwm++) {
  39.                 bflb_pwm_v2_channel_set_threshold(pwm, rgb_pwmchs[color_index], 0, rgb_pwm);
  40.                 bflb_mtimer_delay_ms(1);
  41.             }
  42.             for (rgb_pwm = 2000; rgb_pwm > 0; rgb_pwm--) {
  43.                 bflb_pwm_v2_channel_set_threshold(pwm, rgb_pwmchs[color_index], 0, rgb_pwm);
  44.                 bflb_mtimer_delay_ms(1);
  45.             }
  46.         }
  47.     }
  48. }
复制代码
将main.c的代码更改为上面的代码
然后在vscode中打开终端
执行编译代码
  1. make CHIP=bl616
复制代码
QQ截图20240510222517.png

期间编译出现问题可以参考这两个帖子
关于编译报错#lwip/dns.h找不到的解决办法

make (e=2): 系统找不到指定的文件

然后执行固件烧录
  1. make flash CHIP=bl616 COMX=COMX
复制代码
COMX为开发板的串口号,可以在设备管理器中查看

按住开发板的IO2按钮再按一下EX按钮使得开发板进入烧录模式
烧录成功就可以看到呼吸灯效果了
output.gif



                               
登录/注册后可看大图

本来还想着尝试驱动墨水屏的,奈何没有找到相关驱动,身为小白也不会移植和写驱动,所以坐等墨水屏驱动出来
未完待续
---
5.13更新
没想到在arduino环境下可以直接使用微雪的墨水屏驱动
修改IO
  1. #define EPD_SCK_PIN  25
  2. #define EPD_MOSI_PIN 31
  3. #define EPD_CS_PIN   32
  4. #define EPD_RST_PIN  28
  5. #define EPD_DC_PIN   26
  6. #define EPD_BUSY_PIN 33
复制代码
成功点驱动屏幕
MVIMG_20240513_175958.jpg
MVIMG_20240513_180419.jpg


回复

使用道具 举报

WT_0213 | 2024-5-11 08:41:00 | 显示全部楼层
很详细
回复

使用道具 举报

lazy | 2024-5-11 09:02:12 | 显示全部楼层
回复

使用道具 举报

1055173307 | 2024-5-11 10:56:40 | 显示全部楼层
回复

使用道具 举报

hrqwe | 2024-5-11 13:19:26 | 显示全部楼层
点赞
日拱一卒,功不唐捐
回复

使用道具 举报

noonezero | 2024-5-17 13:19:11 | 显示全部楼层
不错不错
回复

使用道具 举报

wukong50 | 2024-5-17 14:04:53 | 显示全部楼层
支持下
回复

使用道具 举报

sansui | 2024-5-17 14:29:58 | 显示全部楼层
完成任务了
回复 支持 反对

使用道具 举报

timo | 2024-5-17 21:12:36 | 显示全部楼层
恭喜
回复

使用道具 举报

7788 | 2024-5-19 17:17:13 | 显示全部楼层
点灯成功
回复

使用道具 举报

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

本版积分规则