0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

利用星閃BS25開發(fā)板NL001測(cè)試官方sdk中的外設(shè)程序uart

藍(lán)牙 ? 來(lái)源:藍(lán)牙 ? 2024-01-02 11:30 ? 次閱讀

內(nèi)容簡(jiǎn)介

本文利用星閃BS25開發(fā)板NL001測(cè)試一下官方sdk中的外設(shè)程序uart,以便熟悉外設(shè)的基本操作。

測(cè)試工具

Operating system:Windows 10 home

deveco-device-tool-all-in-one:1.1.1_beta2

DevTools_CFBB:1.0.5

Compiler:CFBB IDE 1.0.3

Sdk:20230928

BurnTool:5.0.34

DebugKits_CFBB:3.0.98

Python:3.8.10

VSCode:1.66.2

Here we go

首先用“python build.py standard-bs25-app-evb menuconfig”配置工程為uart:

536352bc-a63a-11ee-8b88-92fbcf53809c.png

這里配置為interrupt方式。

編譯后燒錄到板子上測(cè)試,默認(rèn)程序就能跑起來(lái)。首先保持燒錄口(AP15和AP14)連接到電腦的UART口,打開串口調(diào)試助手查看log,上電后如下:

53798ae6-a63a-11ee-8b88-92fbcf53809c.png

嘗試在串口發(fā)送123后返回?cái)?shù)據(jù):

53888d70-a63a-11ee-8b88-92fbcf53809c.png

明顯默認(rèn)程序運(yùn)行正常,并且收到的數(shù)據(jù)也正常,默認(rèn)程序是通過A_P15(TXD)、A_P14(RXD)與串口調(diào)試助手連接的,參數(shù)為115200、8、1、N。

想要自己整一下代碼,把AP12(tx)、AP13(rx)兩個(gè)引腳注冊(cè)到UART1上面,然后uart1收到數(shù)據(jù)后再重新在uart1上發(fā)送出去,uart0(AP15 TX, AP14 RX)繼續(xù)保留打印系統(tǒng)log的功能(該部分在os其他地方初始化了,并不是在uart_demo.c中初始化的)。

整了一下代碼:

53a1759c-a63a-11ee-8b88-92fbcf53809c.png

53b3f76c-a63a-11ee-8b88-92fbcf53809c.png

53cc4e0c-a63a-11ee-8b88-92fbcf53809c.png

53dce406-a63a-11ee-8b88-92fbcf53809c.png

#include "pinctrl.h"

#include "uart.h"

#include "watchdog.h"

#include "osal_debug.h"

#include "cmsis_os2.h"

#include "app_init.h"

#define UART_BAUDRATE115200

#define UART_DATA_BITS3 //3實(shí)際上是對(duì)應(yīng)了UART_DATA_BIT_8,見uart_data_bit_t

#define UART_STOP_BITS1

#define UART_PARITY_BIT0 //UART_PARITY_NONE,見uart_parity_t

#define UART_TRANSFER_SIZE16

#define CONFIG_UART_INT_WAIT_MS5

#define UART_TASK_STACK_SIZE0x1000

#define UART_TASK_DURATION_MS500

#define UART_TASK_PRIO(osPriority_t)(17)

static uint8_t g_app_uart_rx_buff[UART_TRANSFER_SIZE] = { 0 };

static uint8_t g_app_uart_int_rx_flag = 0;

static uint8_t g_app_uart_int_rx_len = 0;

static uart_buffer_config_t g_app_uart_buffer_config = {

.rx_buffer =g_app_uart_rx_buff,

.rx_buffer_size =UART_TRANSFER_SIZE

};

static void app_uart_init_pin(void)

{

uapi_pin_set_mode(S_AGPIO12,6);

uapi_pin_set_mode(S_AGPIO13,6);

}

static void app_uart_init_config(void)

{

uart_attr_t attr = {

.baud_rate = UART_BAUDRATE,//115200

.data_bits =UART_DATA_BITS, //8

.stop_bits =UART_STOP_BITS, //1

.parity =UART_PARITY_BIT //UART_PARITY_NONE

};

uart_pin_config_t pin_config ={

.tx_pin =S_AGPIO12,//S_MGPIO0,

.rx_pin =S_AGPIO13,//S_MGPIO1,

.cts_pin = PIN_NONE,

.rts_pin = PIN_NONE

};

uapi_uart_init(UART_BUS_1,&pin_config, &attr, NULL, &g_app_uart_buffer_config);

}

static void app_uart_read_int_handler(const void *buffer, uint16_tlength, bool error)

{

unused(error);

if (buffer == NULL || length ==0)

{

osal_printk("uart%dint mode transfer illegal data! ", UART_BUS_1);

return;

}

uint8_t *buff = (uint8_t*)buffer;

if(memcpy_s(g_app_uart_rx_buff, length, buff, length) != EOK)

{

osal_printk("uart%dint mode data copy fail! ", UART_BUS_1);

return;

}

g_app_uart_int_rx_flag = 1;

g_app_uart_int_rx_len = length;

}

static void app_uart_write_int_handler(const void *buffer, uint32_tlength, const void *params)

{

unused(buffer);

unused(length);

unused(params);

uint8_t *buff = (void *)buffer;

osal_printk("uart%d writedata[] =", UART_BUS_1);

for (uint8_t i = 0; i

{

osal_printk("%d", buff[i]);

}

osal_printk(" ");

}

static void *uart_task(const char *arg)

{

unused(arg);

/* UART pinmux. */

app_uart_init_pin();

/* UART init config. */

app_uart_init_config();

osal_printk("uart%d intmode register receive callback start! ", UART_BUS_1);

if(uapi_uart_register_rx_callback(UART_BUS_1,UART_RX_CONDITION_FULL_OR_SUFFICIENT_DATA_OR_IDLE,

1, app_uart_read_int_handler) == ERRCODE_SUCC) {

osal_printk("uart%dint mode register receive callback succ! ", UART_BUS_1);

}

while (1)

{

osDelay(UART_TASK_DURATION_MS);

while(g_app_uart_int_rx_flag != 1) {

osDelay(CONFIG_UART_INT_WAIT_MS);

}

g_app_uart_int_rx_flag = 0;

osal_printk("uart%dint mode send back! ", UART_BUS_1);

if(uapi_uart_write_int(UART_BUS_1, g_app_uart_rx_buff, g_app_uart_int_rx_len, 0,

app_uart_write_int_handler) == ERRCODE_SUCC)

{

osal_printk("uart%d int mode send back succ! ",UART_BUS_1);

}

g_app_uart_int_rx_len = 0;

}

return NULL;

}

static void uart_entry(void)

{

osThreadAttr_t attr;

attr.name ="UartTask";

attr.attr_bits = 0U;

attr.cb_mem = NULL;

attr.cb_size = 0U;

attr.stack_mem = NULL;

attr.stack_size =UART_TASK_STACK_SIZE;

attr.priority = UART_TASK_PRIO;

if(osThreadNew((osThreadFunc_t)uart_task, NULL, &attr) == NULL) {

/* Create task fail. */

}

}

/* Run the uart_entry. */

app_run(uart_entry);

由于電腦只有一個(gè)串口,不能同時(shí)連接AP15,AP14和AP12,AP13兩個(gè)UART口進(jìn)行測(cè)試,所以進(jìn)行了以下測(cè)試:

53f7dd88-a63a-11ee-8b88-92fbcf53809c.png

從測(cè)試結(jié)果來(lái)看,UART0和UART1都已經(jīng)能正常工作了,并且UART0是在引腳AP15和AP14上,UART1是工作在AP12和AP13上面,本例子程序只是對(duì)UART1進(jìn)行了初始化,所以看來(lái)UART0是在系統(tǒng)其他地方進(jìn)行了配置,并且通過調(diào)用osal_prink函數(shù)可以往UART0進(jìn)行debug log發(fā)送。

所以個(gè)人感覺,UART0在萬(wàn)不得已的情況下就不要去動(dòng)它了,串口就用其他的UART BUS好了,除非其他的都不夠用了,那就再去研究一下怎么去使用UART0,對(duì)自己好一點(diǎn),別亂折騰。






審核編輯:劉清

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

    關(guān)注

    22

    文章

    1270

    瀏覽量

    103383
  • 串口調(diào)試
    +關(guān)注

    關(guān)注

    2

    文章

    270

    瀏覽量

    25081
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4825

    瀏覽量

    86304
  • vscode
    +關(guān)注

    關(guān)注

    1

    文章

    167

    瀏覽量

    8392

原文標(biāo)題:遙遙領(lǐng)先,星閃芯片BS25外設(shè)程序測(cè)試—uart

文章出處:【微信號(hào):TalkBT,微信公眾號(hào):藍(lán)牙】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何選擇和編譯海思BS25 SDK下的sle mouse工程

    本文介紹如何選擇和編譯海思BS25 SDK下的sle mouse工程。本文假設(shè)開發(fā)環(huán)境已經(jīng)搭建完畢,具體搭建流程請(qǐng)參考《遙遙領(lǐng)先,華為海
    的頭像 發(fā)表于 10-27 11:23 ?5155次閱讀
    如何選擇和編譯海思<b class='flag-5'>星</b><b class='flag-5'>閃</b><b class='flag-5'>BS25</b> <b class='flag-5'>SDK</b>下的sle mouse工程

    BS25開發(fā)板NL001初體驗(yàn)

    最近拿到了一塊BS25開發(fā)板NL001,做一個(gè)山寨版的“開箱”吧。
    的頭像 發(fā)表于 11-17 09:17 ?5820次閱讀
    <b class='flag-5'>星</b><b class='flag-5'>閃</b><b class='flag-5'>BS25</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>NL001</b>初體驗(yàn)

    如何搭建BS25開發(fā)環(huán)境

    (SparkLink)不多做介紹,有興趣可以自行查找資料,簡(jiǎn)單來(lái)說(shuō)就是一種新型的無(wú)線規(guī)范,理想是取代Bluetooth和Wifi,并且解決了一些藍(lán)牙和wifi的痛點(diǎn)。BS25是某國(guó)內(nèi)廠商推出的一顆支持
    的頭像 發(fā)表于 11-18 17:14 ?3447次閱讀
    如何搭建<b class='flag-5'>星</b><b class='flag-5'>閃</b><b class='flag-5'>BS25</b><b class='flag-5'>開發(fā)</b>環(huán)境

    用BurnTool給芯片BS25燒寫程序

    本文介紹用BurnTool給芯片BS25燒寫程序。
    的頭像 發(fā)表于 11-22 09:49 ?3659次閱讀
    用BurnTool給<b class='flag-5'>星</b><b class='flag-5'>閃</b>芯片<b class='flag-5'>BS25</b>燒寫<b class='flag-5'>程序</b>

    華為BS25 SDKGADC設(shè)置的陷阱

    用華為 BS25 SDK 做產(chǎn)品中發(fā)現(xiàn) GADC的 一個(gè)小陷阱。
    的頭像 發(fā)表于 12-01 14:01 ?1890次閱讀
    華為<b class='flag-5'>星</b><b class='flag-5'>閃</b><b class='flag-5'>BS25</b> <b class='flag-5'>SDK</b><b class='flag-5'>中</b>GADC設(shè)置的陷阱

    利用BS25開發(fā)板NL001測(cè)試SDK外設(shè)程序

    本文利用BS25開發(fā)板NL001測(cè)試一下官方
    的頭像 發(fā)表于 12-22 10:49 ?2623次閱讀
    <b class='flag-5'>利用</b><b class='flag-5'>星</b><b class='flag-5'>閃</b><b class='flag-5'>BS25</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>NL001</b><b class='flag-5'>測(cè)試</b><b class='flag-5'>SDK</b>中<b class='flag-5'>外設(shè)</b><b class='flag-5'>程序</b>

    【BearPi-Pico H3863開發(fā)板體驗(yàn)連載】玩轉(zhuǎn),可視化呈現(xiàn)

    收到BearPi-Pico H3863開發(fā)板,首先感謝電子發(fā)燒友與小熊派提供的平臺(tái)與開發(fā)板。開發(fā)板有兩塊,可以用來(lái)做
    發(fā)表于 09-30 14:26

    如何搭建海思BS25開發(fā)環(huán)境?

    (SparkLink)不多做介紹,有興趣可以自行查找資料,簡(jiǎn)單來(lái)說(shuō)就是一種新型的無(wú)線規(guī)范,用于取代Bluetooth和Wifi,并且解決了一些藍(lán)牙和wifi的痛點(diǎn)。
    的頭像 發(fā)表于 10-07 15:23 ?6785次閱讀
    如何搭建海思<b class='flag-5'>星</b><b class='flag-5'>閃</b><b class='flag-5'>BS25</b><b class='flag-5'>開發(fā)</b>環(huán)境?

    解決BS25 1.0.T20.12版本開發(fā)工具默認(rèn)SDK無(wú)法編譯的問題

    本文介紹在BS25 1.0.T20.12版本開發(fā)工具下,默認(rèn)的SDK無(wú)法編譯的問題。
    的頭像 發(fā)表于 11-08 09:40 ?1294次閱讀
    解決<b class='flag-5'>BS25</b> 1.0.T20.12版本<b class='flag-5'>開發(fā)</b>工具默認(rèn)<b class='flag-5'>SDK</b>無(wú)法編譯的問題

    如何用BurnTool給海思的芯片BS25燒寫程序

    本文介紹用BurnTool給海思的芯片BS25燒寫程序。
    的頭像 發(fā)表于 11-14 09:08 ?5681次閱讀
    如何用BurnTool給海思的<b class='flag-5'>星</b><b class='flag-5'>閃</b>芯片<b class='flag-5'>BS25</b>燒寫<b class='flag-5'>程序</b>?

    海思BS25開發(fā)板NL001初體驗(yàn)

    最近拿到了一塊BS25開發(fā)板NL001,做一個(gè)山寨版的“開箱”吧。
    的頭像 發(fā)表于 11-15 10:01 ?4942次閱讀
    海思<b class='flag-5'>星</b><b class='flag-5'>閃</b><b class='flag-5'>BS25</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>NL001</b>初體驗(yàn)

    華為 SLE 開發(fā)板 BS25SDK 初探

    BS25開發(fā)板SDK初步接觸
    的頭像 發(fā)表于 11-15 16:01 ?3863次閱讀

    華為SLE開發(fā)板BS25SDK初探2

    按照上一篇文章的接口定義連接鼠標(biāo)標(biāo)傳感器 paw3395,SDK提供的樣板程序“sel_mouse_with_dongle”能正常工作。
    的頭像 發(fā)表于 11-18 12:08 ?3769次閱讀

    解決芯片BS25 1.0.T20.12版本開發(fā)工具默認(rèn)SDK無(wú)法編譯的問題

    本文介紹在BS25 1.0.T20.12版本開發(fā)工具下,默認(rèn)的SDK無(wú)法編譯的問題。
    的頭像 發(fā)表于 11-21 09:08 ?1649次閱讀
    解決<b class='flag-5'>星</b><b class='flag-5'>閃</b>芯片<b class='flag-5'>BS25</b> 1.0.T20.12版本<b class='flag-5'>開發(fā)</b>工具默認(rèn)<b class='flag-5'>SDK</b>無(wú)法編譯的問題

    新品SLE duino開發(fā)板搶先看!

    //2023年,可謂爆發(fā)之年。自2023年7月芯片問世至今,各類搭載技術(shù)的產(chǎn)品頻頻發(fā)
    的頭像 發(fā)表于 12-01 08:13 ?5751次閱讀
    <b class='flag-5'>星</b><b class='flag-5'>閃</b>新品SLE duino<b class='flag-5'>開發(fā)板</b>搶先看!

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品