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

    文章

    1235

    浏览量

    101358
  • 串口调试
    +关注

    关注

    2

    文章

    268

    浏览量

    24713
  • python
    +关注

    关注

    56

    文章

    4793

    浏览量

    84632
  • vscode
    +关注

    关注

    1

    文章

    155

    浏览量

    7698

原文标题:遥遥领先,星闪芯片BS25外设程序测试—uart

文章出处:【微信号:TalkBT,微信公众号:蓝牙】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何选择和编译海思BS25 SDK下的sle mouse工程

    本文介绍如何选择和编译海思BS25 SDK下的sle mouse工程。本文假设开发环境已经搭建完毕,具体搭建流程请参考《遥遥领先,华为海
    的头像 发表于 10-27 11:23 4575次阅读
    如何选择和编译海思<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开发板NL001初体验

    最近拿到了一块BS25开发板NL001,做一个山寨版的“开箱”吧。
    的头像 发表于 11-17 09:17 5153次阅读
    <b class='flag-5'>星</b><b class='flag-5'>闪</b><b class='flag-5'>BS25</b><b class='flag-5'>开发板</b><b class='flag-5'>NL001</b>初体验

    如何搭建BS25开发环境

    (SparkLink)不多做介绍,有兴趣可以自行查找资料,简单来说就是一种新型的无线规范,理想是取代Bluetooth和Wifi,并且解决了一些蓝牙和wifi的痛点。BS25是某国内厂商推出的一颗支持
    的头像 发表于 11-18 17:14 3000次阅读
    如何搭建<b class='flag-5'>星</b><b class='flag-5'>闪</b><b class='flag-5'>BS25</b><b class='flag-5'>开发</b>环境

    用BurnTool给芯片BS25烧写程序

    本文介绍用BurnTool给芯片BS25烧写程序
    的头像 发表于 11-22 09:49 2716次阅读
    用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 做产品中发现 GADC的 一个小陷阱。
    的头像 发表于 12-01 14:01 1618次阅读
    华为<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开发板NL001测试SDK外设程序

    本文利用BS25开发板NL001测试一下官方
    的头像 发表于 12-22 10:49 2081次阅读
    <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'>开发板</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开发板体验连载】玩转,可视化呈现

    收到BearPi-Pico H3863开发板,首先感谢电子发烧友与小熊派提供的平台与开发板开发板有两块,可以用来做
    发表于 09-30 14:26

    如何搭建海思BS25开发环境?

    (SparkLink)不多做介绍,有兴趣可以自行查找资料,简单来说就是一种新型的无线规范,用于取代Bluetooth和Wifi,并且解决了一些蓝牙和wifi的痛点。
    的头像 发表于 10-07 15:23 6061次阅读
    如何搭建海思<b class='flag-5'>星</b><b class='flag-5'>闪</b><b class='flag-5'>BS25</b><b class='flag-5'>开发</b>环境?

    解决BS25 1.0.T20.12版本开发工具默认SDK无法编译的问题

    本文介绍在BS25 1.0.T20.12版本开发工具下,默认的SDK无法编译的问题。
    的头像 发表于 11-08 09:40 1037次阅读
    解决<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 3993次阅读
    如何用BurnTool给海思的<b class='flag-5'>星</b><b class='flag-5'>闪</b>芯片<b class='flag-5'>BS25</b>烧写<b class='flag-5'>程序</b>?

    海思BS25开发板NL001初体验

    最近拿到了一块BS25开发板NL001,做一个山寨版的“开箱”吧。
    的头像 发表于 11-15 10:01 4172次阅读
    海思<b class='flag-5'>星</b><b class='flag-5'>闪</b><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 3313次阅读

    华为SLE开发板BS25SDK初探2

    按照上一篇文章的接口定义连接鼠标标传感器 paw3395,SDK提供的样板程序“sel_mouse_with_dongle”能正常工作。
    的头像 发表于 11-18 12:08 3308次阅读

    解决芯片BS25 1.0.T20.12版本开发工具默认SDK无法编译的问题

    本文介绍在BS25 1.0.T20.12版本开发工具下,默认的SDK无法编译的问题。
    的头像 发表于 11-21 09:08 1286次阅读
    解决<b class='flag-5'>星</b><b class='flag-5'>闪</b>芯片<b class='flag-5'>BS25</b> 1.0.T20.12版本<b class='flag-5'>开发</b>工具默认<b class='flag-5'>SDK</b>无法编译的问题

    新品SLE duino开发板抢先看!

    //2023年,可谓爆发之年。自2023年7月芯片问世至今,各类搭载威廉希尔官方网站 的产品频频发
    的头像 发表于 12-01 08:13 5144次阅读
    <b class='flag-5'>星</b><b class='flag-5'>闪</b>新品SLE duino<b class='flag-5'>开发板</b>抢先看!