在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【外設(shè)篇】——FLASH

AIoT行業(yè)洞察 ? 來(lái)源:AIoT行業(yè)洞察 ? 作者:AIoT行業(yè)洞察 ? 2024-12-05 14:31 ? 次閱讀

AiPi-Eyes-S1是安信可開(kāi)源團(tuán)隊(duì)專門為Ai-M61-32S設(shè)計(jì)的一款開(kāi)發(fā)板,支持WiFi6、BLE5.3。所搭載的Ai-M61-32S 模組具有豐富的外設(shè)接口,具體包括 DVP、MJPEG、Dispaly、AudioCodec、USB2.0、SDU、以太網(wǎng) (EMAC)、SD/MMC(SDH)、SPI、UARTI2C、I2S、PWM、GPDAC、GPADC、ACOMP 和 GPIO 等。

AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。

從零開(kāi)始學(xué)習(xí)小安派:

1、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【入門篇】——初識(shí)小安派-Eyes-S1

2、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【入門篇】——安裝VMware與Ubuntu

3、入門篇:零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1——新建工程并燒錄調(diào)試

4、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1入門篇——Win下SSH連接Linux

5、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【入門篇】——Samba共享文件夾

6、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【入門篇】——工程文件架構(gòu)

7、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【外設(shè)篇】——GPIO 輸入輸出

8、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【外設(shè)篇】——GPIO中斷編程

9、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【外設(shè)篇】——PWM

10、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【外設(shè)篇】——UART

11、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【外設(shè)篇】——I2C

12、零基礎(chǔ)開(kāi)發(fā)小安派-Eyes-S1【外設(shè)篇】——ADC

Flash 簡(jiǎn)稱閃存,它的特點(diǎn)是擦除和編程速度快,單片機(jī)的程序一般都是存儲(chǔ)在一定空間內(nèi)中進(jìn)行運(yùn)行。在 C 語(yǔ)言中,程序分為代碼段、常量區(qū)、靜態(tài)數(shù)據(jù)區(qū)(BSS 段,數(shù)據(jù)段)、棧、堆五個(gè)部分組成。內(nèi)部空間就分為 ROMRAM,都是可以用來(lái)存儲(chǔ)內(nèi)容,區(qū)別在于:

ROM 的存儲(chǔ)特性比較穩(wěn)定,很久以前它不可擦除,所以只可讀不可寫,F(xiàn)LASH 就是一種特殊的 ROM,可擦除可讀可寫,在掉電后不丟失。RAM 的存儲(chǔ)特性較不穩(wěn)定,但讀寫速度快,掉電后丟失。

它們的差異如下:

wKgZO2dRSK2AJjzUAACvSBXB5k0411.jpg

總結(jié):FLASH 也就是 ROM,掉電后不丟失,讀寫速度較慢,空間大,可以理解未電腦上的硬盤。RAM 速度快,掉電后丟失,可以理解未電腦上的內(nèi)存。

一、了解小安派-Eyes-S1 的存儲(chǔ)

618FLASH 物理上的地址起始地址是 0XA0000000。M61-32S 的 FLASH 大小是 8M。在數(shù)據(jù)手冊(cè)中可以看到所有的模塊地址映射,包括外設(shè)的地址。

在這之前需要了解分區(qū)表的概念,分區(qū)表就是劃分 FLASH 的清單,將 FLASH 劃分為多個(gè)不同功能區(qū)域用于其它功能。在操作 FLASH 時(shí)得看一下分區(qū)表,查看哪些地址可以使用。在 SDK 中有 4M 的分區(qū)表,里面規(guī)劃了一些分區(qū)的命名,起始地址和大小,這個(gè)目錄下找到。

AiPi-Open-Kits/aithinker_Ai-M6X_SDK/bsp/board/bl616dk/config/partition_cfg_4M.toml,在參與編譯時(shí)會(huì)在工程文件夾下的 build/build_out 中生成 partition.bin。我們?cè)?flash_prog_cfg.ini 中可以看到,常見(jiàn)的有 BOOT2 固件,filedir:固件路徑,address:地址,boot2 必須使用 0 地址。而 partition 表示分區(qū)表固件,address 是根據(jù) partition_cfg_4M.toml 指定。而 FW 則表示需要燒錄的應(yīng)用固件,F(xiàn)W 可以在 partition_cfg_4M.toml 中看到。

wKgZPGdRSK6ABhb4AABP5NoUMfI556.jpg

我們可以添加一樣的“分區(qū)”,創(chuàng)建屬于自己的名字,也可以在分區(qū)表中查看已有的分區(qū)使用。當(dāng)然,建議還是使用原廠分配的分區(qū)表。

1.bflb_flash_init

說(shuō)明: flash 初始化,自動(dòng)識(shí)別支持的 flash 并重新配置 flash 的參數(shù)。如果返回錯(cuò)誤,必須停止運(yùn)行代碼。

int bflb_flash_init(void);

wKgZPGdRSK6Aa8jxAAAms55OaAI773.jpg

2.bflb_flash_get_jedec_id

說(shuō)明: 獲取 flash jedec id。

uint32_t bflb_flash_get_jedec_id(void);

wKgZO2dRSK-AahXxAAAjC6AKz1s840.jpg

3.bflb_flash_get_cfg

說(shuō)明: 獲取 flash 配置。

void bflb_flash_get_cfg(uint8_t **cfg_addr, uint32_t *len);

wKgZPGdRSK-AFsc7AAAuZmpgOEM504.jpg

4.bflb_flash_set_iomode

說(shuō)明: 設(shè)置 flash IO 工作模式。

void bflb_flash_set_iomode(uint8_t iomode);

wKgZO2dRSK-AJnhrAAAMyU5fSCk660.jpg

可填入以下幾種模式:

#define FLASH_IOMODE_NIO 0
#define FLASH_IOMODE_DO 1
#define FLASH_IOMODE_QO 2
#define FLASH_IOMODE_DIO 3
#define FLASH_IOMODE_QIO 4

5.bflb_flash_get_image_offset

說(shuō)明: 獲取代碼 xip 虛擬地址實(shí)際所在的 flash 物理地址。

uint32_tbflb_flash_get_image_offset(void);

wKgZPGdRSLCANER7AAAjQdbsQZs988.jpg

6.bflb_flash_erase

說(shuō)明: flash 扇區(qū)擦除。len 為擦除的長(zhǎng)度,需要為 4096 倍數(shù),假設(shè) addr 為 0 , len 為 4096,則擦除范圍為 0 ~ 4095。

intbflb_flash_erase(uint32_t addr,uint32_t len);

wKgZO2dRSLCAOWHeAAA9B6WAqqY026.jpg

7.bflb_flash_write

說(shuō)明:獲取代碼 xip 虛擬地址實(shí)際所在的 flash 物理地址。

intbflb_flash_write(uint32_t addr, uint8_t *data,uint32_t len);

wKgZPGdRSLGAQXVVAABGgES7ZG4055.jpg

8.bflb_flash_read

說(shuō)明: 獲取代碼 xip 虛擬地址實(shí)際所在的 flash 物理地址。

intbflb_flash_read(uint32_t addr,uint8_t *data,uint32_t len);

wKgZO2dRSLGAOlEZAABEExxccus377.jpg

9.bflb_flash_aes_init

說(shuō)明: 配置某一段 flash 區(qū)域進(jìn)行硬件 aes 解密,能夠通過(guò) xip 直接讀取解密后的內(nèi)容。

voidbflb_flash_aes_init(struct bflb_flash_aes_config_s *config);

wKgZPGdRSLGAV6XiAAAiuwZE-ik189.jpg

10.bflb_flash_aes_enable

說(shuō)明: 使能 flash aes 解密。

voidbflb_flash_aes_enable(void);

11.bflb_flash_aes_disable

說(shuō)明: 關(guān)閉 flash aes 解密。

voidbflb_flash_aes_disable(void);

二、簡(jiǎn)單示例——上電后讀取 flash 內(nèi)的值并打印

1.首次寫入

#include "bflb_flash.h"
#include "board.h"
#include "string.h"
//頭文件
#define FLASH_RW_START_ADDR 0x3F3000
//宏定義讀寫起始地址,查看分區(qū)表可以看出這是“DATA”所在分區(qū)
static uint8_t write_buf[16];
static uint8_t read_buf[16];
//定義讀寫緩存數(shù)組
int main(void)
{
uint32_t i;
board_init();
//板子初始化,包括了bflb_flash_init
memset(write_buf, 0, sizeof(write_buf));
memset(read_buf, 0, sizeof(read_buf));
//清空緩存數(shù)組
strcpy(write_buf,"HelloWorld!");
//填寫write數(shù)組內(nèi)容
/* erase flash */
bflb_flash_erase(FLASH_RW_START_ADDR,sizeof(write_buf));
//擦除緩存數(shù)組大小,從起始地址開(kāi)始
/* read flash data */
bflb_flash_read(FLASH_RW_START_ADDR, read_buf, sizeof(read_buf));
//讀取flash內(nèi)的內(nèi)容緩存到read數(shù)組里
for (i = 0; i < sizeof(read_buf); i++) {
if (read_buf[i] != write_buf[i]) {
printf("rnflash read fail at %d, expect:%d but get %d", i, write_buf[i], read_buf[i]);
}
}
//for循環(huán)校驗(yàn),當(dāng)write和read內(nèi)容不一致時(shí)會(huì)打印
/* write flash data */
bflb_flash_write(FLASH_RW_START_ADDR, write_buf, sizeof(write_buf));
//將write內(nèi)容寫入flash中
memset(read_buf, 0, sizeof(read_buf));
/* read flash data */
bflb_flash_read(FLASH_RW_START_ADDR, read_buf, sizeof(read_buf));

printf("rn%s",read_buf);
while (1) {
}
}

第一次運(yùn)行程序效果:在擦除了后讀出來(lái)的 ASCII 碼為 255

wKgZO2dRSLKAKsw5AAC2HkQ3oII128.jpg

2.二次讀取,查看上電打印信息

#include "bflb_flash.h"
#include "board.h"
#include "string.h"
#define FLASH_RW_START_ADDR 0x3F3000
static uint8_t write_buf[16];
static uint8_t read_buf[16];
int main(void)
{
uint32_t i;
board_init();
memset(write_buf, 0, sizeof(write_buf));
memset(read_buf, 0, sizeof(read_buf));
strcpy(write_buf,"HelloWorld!");
/* read flash data */
bflb_flash_read(FLASH_RW_START_ADDR, read_buf, sizeof(read_buf));
for (i = 0; i < sizeof(read_buf); i++) {
if (read_buf[i] != write_buf[i]) {
printf("rnflash read fail at %d, expect:%d but get %d", i, write_buf[i], read_buf[i]);
}
}
printf("rn%s",read_buf);
while (1) {
}
}

二次讀取后的運(yùn)行效果:校驗(yàn)成功,只讀取出 hellowold

wKgZPGdRSLKAfwptAABoMwcb7jE938.jpg

三、使用 easyflash 庫(kù),匹配字段

在 AiPi-SCP_SmartCtrl 工程中的 components 下,有 easy_flash 庫(kù),使用 easy_flash 更加方便快捷,只需要定義字段,第一個(gè)參數(shù)填入字段,第二個(gè)參數(shù)填入值,即可通過(guò)匹配字段的方式將值與字段匹配上。添加庫(kù)的方式如下:

1.將 easy_flash 的文件夾復(fù)制下來(lái),放到模板工程中,這里使用 Project_basic 的模板工程,記得修改工程名。

wKgZO2dRSLOAKj0VAACRfkiO1nk381.jpg

2.在 CMakeLists.txt 下的添加 easyflash 的庫(kù)文件。

wKgZPGdRSLOAHystAADtqdw2-gM135.jpg

3.在 proj.conf 下打開(kāi) easyflash 控件。

wKgZO2dRSLSASdhDAACoe7Jb85E340.jpg

4.使用方法,只需要在調(diào)用 flash_erase_set 時(shí)填入兩個(gè)參數(shù),第一個(gè)參數(shù)為匹配的字段,一般由宏定義的字符串常量。第二個(gè)參數(shù)為值,也就是需要存儲(chǔ)的值。這樣在 flash 中就是由常駐的字段 + 值組成,在獲取值時(shí)可以通過(guò)“字段‘來(lái)尋找相應(yīng)的值。通過(guò) flash_get_data 的方式,傳入查找的字段和長(zhǎng)度,得到存儲(chǔ)的值。

wKgZPGdRSLSAUm3QAAAOnFkP1pU378.jpg

wKgZO2dRSLSATLdmAAAW7brbccw584.jpg

wKgZPGdRSLWAY3MwAAAYHXYixQM488.jpg

5.easyflash 使用的“PSM”分區(qū),大小是 32K,起始地址是 0X3E9000。在這里面我們可以存放一些標(biāo)志位,或者是類似 wifi 名稱密碼、AP 名稱密碼等關(guān)鍵信息,使用起來(lái)也方便,通過(guò)匹配字段的方式將關(guān)鍵信息填入所需任務(wù)。如在 AT 指令中將 SSID 和 PASS 通過(guò)第三個(gè)參數(shù) 0 或 1 選擇是否存入 flash 中。方便實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)連接 wifi 且可通過(guò)指令修改 wifi 等操作。

wKgZO2dRSLWAM9ZwAABKabnPC7c498.jpg



審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1635

    瀏覽量

    148023
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8598

    瀏覽量

    151156
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    零基礎(chǔ)開(kāi)發(fā)小安-Eyes-S1 外設(shè)——DAC

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從開(kāi)始學(xué)習(xí)小安
    的頭像 發(fā)表于 12-27 10:55 ?339次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b> <b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b>——DAC

    零基礎(chǔ)開(kāi)發(fā)小安-Eyes-S1外設(shè)——I2S

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從開(kāi)始學(xué)習(xí)小安
    的頭像 發(fā)表于 12-13 18:02 ?975次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b><b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b>——I2<b class='flag-5'>S</b>

    電子DIY作品 小安R1做個(gè)86盒中控

    前言 筆者之前看小安的開(kāi)源資料, 就對(duì) R1 這個(gè)板子情有獨(dú)鐘 這就是為 86 盒而生啊 剛好安信可社區(qū)一直有積分兌換活動(dòng) (https://bbs.ai-thinker.com/) 這次就用
    的頭像 發(fā)表于 12-05 14:34 ?181次閱讀
    電子DIY作品 <b class='flag-5'>小安</b><b class='flag-5'>派</b>R<b class='flag-5'>1</b>做個(gè)86盒中控

    零基礎(chǔ)入門PCB工程師

    各位前輩大家好,零基礎(chǔ)入門PCB工程師,有什么學(xué)習(xí)資料推薦嗎?
    發(fā)表于 11-27 16:54

    零基礎(chǔ)開(kāi)發(fā)小安-Eyes-S1 外設(shè) ——I2C

    。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從開(kāi)始學(xué)習(xí)小安
    的頭像 發(fā)表于 11-27 16:39 ?221次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b> <b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b> ——I2C

    小安 AiPi-Eyes-R2 玩植物大戰(zhàn)僵尸

    - Eyes-R1 帶外置 ES8388 音頻芯片,支持兩路音頻輸入輸出。小安 - Eyes-R2 采用內(nèi)置 CodeC,支持單路音頻輸入輸出。 如果是編譯帶 8388
    的頭像 發(fā)表于 11-06 16:10 ?217次閱讀
    用<b class='flag-5'>小安</b><b class='flag-5'>派</b> AiPi-<b class='flag-5'>Eyes</b>-R2 玩植物大戰(zhàn)僵尸

    零基礎(chǔ)開(kāi)發(fā)小安-Eyes-S1【入門】——工程文件架構(gòu)

    -Eyes-S1【入門】——初識(shí)小安-Eyes-S12、零基礎(chǔ)
    的頭像 發(fā)表于 11-06 16:10 ?163次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>【入門<b class='flag-5'>篇</b>】——工程文件架構(gòu)

    零基礎(chǔ)開(kāi)發(fā)小安-Eyes-S1外設(shè)】——PWM

    】——工程文件架構(gòu)7、零基礎(chǔ)開(kāi)發(fā)小安-Eyes-S1外設(shè)
    的頭像 發(fā)表于 11-06 16:10 ?154次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>【<b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b>】——PWM

    零基礎(chǔ)開(kāi)發(fā)小安-Eyes-S1外設(shè)——GPIO中斷編程

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 產(chǎn)品資料:https://docs.ai-thinker.com/eyes
    的頭像 發(fā)表于 10-29 14:56 ?757次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b><b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b>——GPIO中斷編程

    零基礎(chǔ)開(kāi)發(fā)小安-Eyes-S1外設(shè)——GPIO 輸入輸出

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP攝像頭接口,外置ES8388音頻編解碼芯片以及預(yù)留TF卡座,并且引出USB接口,可接入U(xiǎn)SB攝像頭。 從開(kāi)始學(xué)習(xí)小安
    的頭像 發(fā)表于 10-25 13:50 ?1025次閱讀
    <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b><b class='flag-5'>外設(shè)</b><b class='flag-5'>篇</b>——GPIO 輸入輸出

    開(kāi)發(fā)教程 零基礎(chǔ)開(kāi)發(fā)小安-Eyes-S1入門——Win下SSH連接Linux

    AiPi-Eyes-S1 是安信可開(kāi)源團(tuán)隊(duì)專門為Ai-M61-32S設(shè)計(jì)的一款開(kāi)發(fā)板,支持WiFi6、BLE5.3。所搭載的Ai-M61-32S 模組具有豐富的
    的頭像 發(fā)表于 09-24 14:31 ?304次閱讀
    <b class='flag-5'>開(kāi)發(fā)</b>教程 <b class='flag-5'>零基</b>礎(chǔ)<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>入門<b class='flag-5'>篇</b>——Win下SSH連接Linux

    RT-Thread驅(qū)動(dòng)開(kāi)發(fā)指南進(jìn)階-動(dòng)手驅(qū)動(dòng)先楫未適配的外設(shè)LCD

    經(jīng)過(guò)上一的《《RT-Thread設(shè)備驅(qū)動(dòng)開(kāi)發(fā)指南》基礎(chǔ)--以先楫bsp的hwtimer設(shè)備為例》闡述,可以大致了解到RT-thread設(shè)備驅(qū)動(dòng)開(kāi)發(fā)的方法步驟,
    的頭像 發(fā)表于 02-25 11:04 ?2551次閱讀
    RT-Thread驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)</b>指南進(jìn)階<b class='flag-5'>篇</b>-動(dòng)手驅(qū)動(dòng)先楫未適配的<b class='flag-5'>外設(shè)</b>LCD

    功德+1,用小安-Eyes-S1做一個(gè)電子木魚

    2024積德累功,心想事成!接下來(lái) 看看如何用小安-Eyes-S1做一個(gè)電子木魚 。 01、GUI-Guider 頁(yè)面設(shè)計(jì) 先新建一個(gè)工程。 直接進(jìn)入 UI 設(shè)計(jì)界面,這里用到了兩個(gè)組件, 一個(gè)是圖片按鈕,一個(gè)是文本框 。 先
    的頭像 發(fā)表于 01-16 14:33 ?761次閱讀
    功德+<b class='flag-5'>1</b>,用<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>做一個(gè)電子木魚

    如何用小安-Eyes-S1做一個(gè)電子木魚?

    2024年的第一教程來(lái)了,本篇學(xué)習(xí)如何添加LVGL事件,并制作完成一個(gè)電子木魚(小美苦苦哀求,我略微出手而已)。祝大家2024積德累功,心想事成!接下來(lái)看看如何用小安-Eyes-S1
    的頭像 發(fā)表于 01-13 15:18 ?1030次閱讀
    如何用<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>做一個(gè)電子木魚?

    【核桃1B 開(kāi)發(fā)板試用體驗(yàn)】+部分外設(shè)功能測(cè)試

    核桃開(kāi)發(fā)板配置了許多的接口及相應(yīng)的處理,直接使用它們就可獲得相應(yīng)的用途。 音頻接口 核桃板載了一個(gè)3.5mm的音頻輸出口,通過(guò)該接口可提供一定的輸出功率,能驅(qū)動(dòng)耳機(jī)或帶功放的揚(yáng)聲器。 圖
    發(fā)表于 01-04 10:30
    主站蜘蛛池模板: 操的好爽视频| 国产黄色片一级| 免费看国产片| 1024你懂的国产在线播放| 唐人社电亚洲一区二区三区| 亚洲香蕉毛片久久网站老妇人| 中文字幕一区二区三区免费看| 婷婷国产在线| 欧美天天性影院| 成年人视频黄色| 欧美性极品hd高清视频| 在线天堂视频| 欧美性free免费| 天天插天天爱| 欲妇放荡叫床很浪的小说| 性人久久久久| 噜噜色综合| 午夜精品网站| 黄色男人的天堂| 午夜精品视频任你躁| 激情五月开心婷婷| 日韩爱爱| 欧美人成一本免费观看视频| 日韩欧美中文字幕在线视频| 国产色女人| 久久久久久久久久久观看| 亚洲www美色| 欧美大狠狠大臿蕉香蕉大视频| 91精品国产免费久久久久久青草| 成人国产永久福利看片| 最新日韩中文字幕| 久久综合丁香| 欧美adc影院| 久久99热久久精品23| 欧美视频色| 久久99精品国产麻豆宅宅| 亚洲aaaa级特黄毛片| 性夜黄a爽爽免费视频国产| 丁香婷婷激情五月| 免费爱爱网站| 精品视频69v精品视频|