<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

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

內容簡介

本文利用星閃BS25開發板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口,打開串口調試助手查看log,上電后如下:

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

嘗試在串口發送123后返回數據:

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

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

想要自己整一下代碼,把AP12(tx)、AP13(rx)兩個引腳注冊到UART1上面,然后uart1收到數據后再重新在uart1上發送出去,uart0(AP15 TX, AP14 RX)繼續保留打印系統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都已經能正常工作了,并且UART0是在引腳AP15和AP14上,UART1是工作在AP12和AP13上面,本例子程序只是對UART1進行了初始化,所以看來UART0是在系統其他地方進行了配置,并且通過調用osal_prink函數可以往UART0進行debug log發送。

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






審核編輯:劉清

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

    關注

    22

    文章

    1163

    瀏覽量

    100242
  • 串口調試
    +關注

    關注

    2

    文章

    265

    瀏覽量

    24533
  • python
    +關注

    關注

    52

    文章

    4698

    瀏覽量

    83610
  • vscode
    +關注

    關注

    1

    文章

    151

    瀏覽量

    7476

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

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

收藏 人收藏

    評論

    相關推薦

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

    本文介紹如何選擇和編譯海思星閃BS25 SDK下的sle mouse工程。本文假設開發環境已經搭建完畢,具體搭建流程請參考《遙遙領先,華為海思星閃芯片BS25
    的頭像 發表于 10-27 11:23 ?3609次閱讀
    如何選擇和編譯海思星閃<b class='flag-5'>BS25</b> <b class='flag-5'>SDK</b>下的sle mouse工程

    星閃BS25開發板NL001初體驗

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

    如何搭建星閃BS25開發環境

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

    用BurnTool給星閃芯片BS25燒寫程序

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

    華為星閃BS25 SDK中GADC設置的陷阱

    用華為星閃 BS25 SDK 做產品中發現 GADC中的 一個小陷阱。
    的頭像 發表于 12-01 14:01 ?1171次閱讀
    華為星閃<b class='flag-5'>BS25</b> <b class='flag-5'>SDK</b>中GADC設置的陷阱

    利用星閃BS25開發板NL001測試SDK外設程序

    本文利用星閃BS25開發板NL001測試一下官方sdk中的
    的頭像 發表于 12-22 10:49 ?1373次閱讀
    <b class='flag-5'>利用</b>星閃<b class='flag-5'>BS25</b><b class='flag-5'>開發板</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>

    6410官方MODE原理圖,海天雄6410的開發板

    6410官方MODE原理圖,包括底板和核心兩部分~!對開發ARM的有很大幫助!增加海天雄6410的
    發表于 08-04 10:21

    如何利用官方開發板(DA14580 Bluetooth Smart development Kit-Pro)測功耗

    本文主要介紹如何利用官方開發板DA14580/581/583 Bluetooth Smart development Kit-Pro(下文簡稱KitPro) 和軟件SmartSnippets來
    發表于 04-01 09:27

    【博流 BL-HWC-G1 開發板試用】使用GPIO點燈(官方SDK

    在之前的兩篇文章,我分別分享了博流 BL-HWC-G1 開發板上,官方sdk和openharmony的基本使用。官方
    發表于 11-22 19:06

    解決BS25 1.0.T20.12版本開發工具默認SDK無法編譯的問題

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

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

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

    海思星閃BS25開發板NL001初體驗

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

    華為星閃 SLE 開發板 BS25SDK 初探

    星閃BS25開發板SDK初步接觸
    的頭像 發表于 11-15 16:01 ?2448次閱讀

    華為星閃SLE開發板BS25SDK初探2

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

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

    本文介紹在BS25 1.0.T20.12版本開發工具下,默認的SDK無法編譯的問題。
    的頭像 發表于 11-21 09:08 ?810次閱讀
    解決星閃芯片<b class='flag-5'>BS25</b> 1.0.T20.12版本<b class='flag-5'>開發</b>工具默認<b class='flag-5'>SDK</b>無法編譯的問題
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>