RM新时代网站-首页

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

藍牙 ? 來源:藍牙 ? 2024-01-02 11:30 ? 次閱讀

內(nèi)容簡介

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

測試工具

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方式。

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

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

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

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

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

想要自己整一下代碼,把AP12(tx)、AP13(rx)兩個引腳注冊到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實際上是對應了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);

由于電腦只有一個串口,不能同時連接AP15,AP14和AP12,AP13兩個UART口進行測試,所以進行了以下測試:

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

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

所以個人感覺,UART0在萬不得已的情況下就不要去動它了,串口就用其他的UART BUS好了,除非其他的都不夠用了,那就再去研究一下怎么去使用UART0,對自己好一點,別亂折騰。






審核編輯:劉清

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

    關注

    22

    文章

    1235

    瀏覽量

    101354
  • 串口調(diào)試

    關注

    2

    文章

    268

    瀏覽量

    24712
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84627
  • vscode
    +關注

    關注

    1

    文章

    155

    瀏覽量

    7696

原文標題:遙遙領先,星閃芯片BS25外設程序測試—uart

文章出處:【微信號:TalkBT,微信公眾號:藍牙】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

    本文介紹如何選擇和編譯海思BS25 SDK下的sle mouse工程。本文假設開發(fā)環(huán)境已經(jīng)搭建完畢,具體搭建流程請參考《遙遙領先,華為海
    的頭像 發(fā)表于 10-27 11:23 ?4572次閱讀
    如何選擇和編譯海思<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初體驗

    最近拿到了一塊BS25開發(fā)板NL001,做一個山寨版的“開箱”吧。
    的頭像 發(fā)表于 11-17 09:17 ?5146次閱讀
    <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>初體驗

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

    (SparkLink)不多做介紹,有興趣可以自行查找資料,簡單來說就是一種新型的無線規(guī)范,理想是取代Bluetooth和Wifi,并且解決了一些藍牙和wifi的痛點。BS25是某國內(nèi)廠商推出的一顆支持
    的頭像 發(fā)表于 11-18 17:14 ?2998次閱讀
    如何搭建<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 ?2699次閱讀
    用BurnTool給<b class='flag-5'>星</b><b class='flag-5'>閃</b>芯片<b class='flag-5'>BS25</b>燒寫<b class='flag-5'>程序</b>

    華為BS25 SDKGADC設置的陷阱

    用華為 BS25 SDK 做產(chǎn)品中發(fā)現(xiàn) GADC的 一個小陷阱。
    的頭像 發(fā)表于 12-01 14:01 ?1616次閱讀
    華為<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設置的陷阱

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

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

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

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

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

    (SparkLink)不多做介紹,有興趣可以自行查找資料,簡單來說就是一種新型的無線規(guī)范,用于取代Bluetooth和Wifi,并且解決了一些藍牙和wifi的痛點。
    的頭像 發(fā)表于 10-07 15:23 ?6052次閱讀
    如何搭建海思<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ā)工具默認SDK無法編譯的問題

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

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

    本文介紹用BurnTool給海思的芯片BS25燒寫程序
    的頭像 發(fā)表于 11-14 09:08 ?3988次閱讀
    如何用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初體驗

    最近拿到了一塊BS25開發(fā)板NL001,做一個山寨版的“開箱”吧。
    的頭像 發(fā)表于 11-15 10:01 ?4166次閱讀
    海思<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>初體驗

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

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

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

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

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

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

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

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