零. 概述

主要介绍下用Linux ubuntu虚拟机外接我们的蓝牙扩展版跑蓝牙协议栈的初始化以及搜索演示

一. 声明

本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。

第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等

第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等

第四篇:传统蓝牙host介绍,主要介绍传统蓝牙的协议栈,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的协议吧。

第五篇:低功耗蓝牙controller介绍,主要介绍低功耗蓝牙芯片,包括物理层(PHY),链路层(LL)

第六篇:低功耗蓝牙host介绍,低功耗蓝牙协议栈的介绍,包括HCI,L2CAP,ATT,GATT,SM等

第七篇:蓝牙芯片介绍,主要介绍一些蓝牙芯片的初始化流程,基于HCI vendor command的扩展

第八篇:附录,主要介绍以上常用名词的介绍以及一些特殊流程的介绍等。

另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。

-------------------------------------------------------------------------------------------------------------------------

CSDN学院链接(进入选择你想要学习的课程):https://edu.csdn.net/lecturer/5352?spm=1002.2001.3001.4144

蓝牙交流扣扣群:970324688

Github代码:https://github.com/sj15712795029/bluetooth_stack

入手开发板:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22329603896.18.5aeb41f973iStr&id=622836061708

蓝牙学习目录:https://blog.csdn.net/XiaoXiaoPengBo/article/details/107727900

--------------------------------------------------------------------------------------------------------------------------

演示视频点击我(!!!!!!!!!!!!!!!!)

二. ubuntu虚拟机 蓝牙协议栈封装使用AT command实现搜索

使用步骤操作如下:(Linux ubuntu虚拟机外接蓝牙扩展点击链接)!!!!!!!!!!!!!!!!!!!!

步骤 1)准备好代码,从github下载下来最新的代码(在上面有):

步骤 2)连接好硬件

需要找一个带流控的串口板来接线,接线是:

VCC 5V供电,GND接到GND,TX接到TX,RX接到RX,CTS接到CTS,RTS接到RTS

可能你会问为啥TX是接TX,RX接RX,CTS接CTS,RTS接RTS,而不是TX接RX,RX接TX,CTS接RTS,RTS接CTS

步骤 3)把代码放到ubuntu主机主机上,打开Linux工程

1-BLUETOOTH\project\ubuntu_csr8x11_bt,然后直接make编译,他会编译出来一个bt_demo

步骤 4)把硬件插入到ubuntu,改下ttyUSB0的权限(sudo chmod 777 /dev/ttyUSB0)(否则不能通信)

步骤 5)执行./bt_demo等初始化通过后,然后敲BT_INQUIRY来搜索就行了

三. 实现原理

步骤1)实现串口监测

void stdin_process_init()
{pthread_t thread_stdin_id;pthread_create(&thread_stdin_id, NULL, stdin_process_thread, NULL);
}
void *stdin_process_thread(void *data)
{while(1){fd_set read_fd;int result = 0;/* monitor uart rx */FD_ZERO (&read_fd);FD_SET (0, &read_fd);if ((result = select (1, &read_fd, NULL, NULL, NULL)) == -1){printf("ERROR:file[%s],function[%s],line[%d] select fail\n",__FILE__,__FUNCTION__,__LINE__);}if(result > 0 && FD_ISSET ( 0, &read_fd)){memset(stdin_buf,0,STDIN_BUF_SIZE);int read_result = read(0,stdin_buf,STDIN_BUF_SIZE);stdin_recv_len = read_result;//printf("--------1---------len %d\n",read_result);//bt_hex_dump(stdin_buf,read_result);//printf("--------2----------\n");}}
}

大概原理就是先创建一个thread,然后一直监听stdin,也就是fd 0,监听到有输入,然后就把他放在stdin_buf

步骤 2)stdin buffer的解析

void stdin_process_run()
{if(stdin_recv_len != 0){shell_parse(stdin_buf);stdin_recv_len = 0;}
}
uint8_t shell_parse(uint8_t *shell_string)
{....if(strncmp(BT_INQUIRY_CMD,(const char*)shell_string,strlen(BT_INQUIRY_CMD)) == 0){printf("SHELL:operate bt inquiry\n");bt_start_inquiry(0x30,HCI_INQUIRY_MAX_DEV);return 0;}
}

然后这样就实现了AT跟协议栈的对接

蓝牙协议栈模组在linux ubuntu 跑蓝牙协议栈 --传统蓝牙搜索演示以及实现原理相关推荐

  1. esp32语音控制_评测ESPRESSIF 乐鑫ESP32-WROVER WIFI+蓝牙通用模组

    前言:之前小编也说过国内ESPRESSIF 乐鑫的WIFI方案是目前在物联网中最受欢迎的性价比WiFi解决方案之一,所以今天的主角要说的是ESP32-WROVER-IB WIFI+蓝牙通用模组.它的功 ...

  2. 蓝牙协议栈开发板 STM32F1 跑蓝牙协议栈 --传统蓝牙搜索演示以及实现原理

    零. 概述 主要介绍下蓝牙协议栈开发板跑传统蓝牙搜索AT指令以及上位机操作步骤,以及原理 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝 ...

  3. TI CC2640R2F-Q1车规级蓝牙WIFI模组介绍

    汽车电子产品的价格普遍比较消费类都较贵,通常有工规和车规之分,今天来聊聊车规级芯片贵在哪里. 一.车规的验证标准 AEC-Q100 针对有源(Active Device)元件的要求 AEC-Q200 ...

  4. 猜解小米5.99元蓝牙Mesh模组

    ​源文链接: https://mp.weixin.qq.com/s?__biz=MzI3NDE2NDMwNQ==&tempkey=MTAzNl90Z1RhQkZSQ2JxS3dybTFOZDR ...

  5. EFR32BG22 BLE模组(低功耗蓝牙通信模组)AT指令测试

    BG22Ax低功耗蓝牙模组 BG22A系列模组是基于Silicon labs公司EFR32BG22系列芯片研发的低功耗蓝牙(BLE)射频模块. 芯片主要特点: 支持完整的BLE 5.1--AOA,AO ...

  6. UA287Q蓝牙模组,UA800 Wi-Fi模组助力扫地机器人方案,为传统电器插上“智能”翅膀

    一屋不扫,何以扫天下? 随着人们生活水平的日益提升,大众对智能化的追求也越来越高,扫地机器人这样的智能家居产品便应运而生,它的出现,为我们带来更加便利.舒适的家居体验.接下来,我们就一起来看下,何为扫 ...

  7. 广和通5G模组FM150-AE在Win11下的短信和通话演示

    关键词:广和通  5G  高通芯片组  FM150  短信  text  通话  拨号   概述:5G模组主要用于跑数据流量,但其实基础的短信功能也还是支持的.而且,虽然没有音频接口,但是呼入呼出的提 ...

  8. 广和通5G模组FM650-CN在Win11下的短信和通话演示

    关键词:广和通  5G  高通芯片组  FM650  短信  text  通话  拨号   概述:5G模组主要用于跑数据流量,但其实基础的短信功能也还是支持的.而且,虽然没有音频接口,但是呼入呼出的提 ...

  9. 移远5G模组RM500U-CN在Win11下的短信和通话演示

    关键词:移远  5G  展锐芯片组  RM500U-CN  短信  text  通话  拨号   概述:5G模组主要用于跑数据流量,但其实基础的短信功能也还是支持的.而且,虽然没有音频接口,但是呼入呼 ...

最新文章

  1. 武汉大学2010年数学分析试题解答
  2. java获取当前tomcat线程pid_java 查看tomcat线程信息(示例代码)
  3. 【LeetCode笔记】剑指 Offer 13-. 机器人的运动范围 (Java、dfs)
  4. python 没有控件_PyQt自定义控件未显示
  5. 编程初学者必须知道的十件事
  6. HTTP异步链接池发送HTTP外部请求,获取本地ip导致HTTP外部请求很慢怎么解决?
  7. OptiStruct 11.0有限元优化分析视频教程
  8. 微信小程序商城毕业设计毕设作品(6)任务书
  9. 当c语言学到大成时,教孩子学编程(信息学奥赛C语言版)
  10. 24年未遇之奇景再等等 Intel旗舰显卡曝5-6月发布
  11. Redhat下小企鹅输入法的安装
  12. E-R图转化为关系模型
  13. 金融知识入门之基金基础概念
  14. html 带边框的梯形,css clip-path画带边框梯形多边形
  15. 席裕庚《预测控制》学习记录 (一)-基于阶跃响应的动态矩阵控制(DMC)包含仿真
  16. 【转】Windows系统中简单卷、带区卷、跨区卷、镜像卷的测试对比
  17. Gradle配置之常见问题-Could not resolve com.android.tools.build:gradle
  18. CMakeList 中引用系统环境变量中的 include 文件,以及 lib 文件
  19. Object类中的五种方法
  20. 【蓝桥杯JavaB组真题详解】振兴中华(2013)

热门文章

  1. 4.树和二叉树——数据结构 (严蔚敏C语言版)
  2. Uniapp——使用安卓原生插件
  3. selenium自动登录知网下载论文
  4. webERP安装配置超详细
  5. 支付宝扫码支付示例源码
  6. 学渣的刷题之旅 leetcode刷题 88. 合并两个有序数组
  7. 曲线运动与万有引力公式_高中物理必修一知识点总结:曲线运动万有引力
  8. 荣耀v10图片是html格式,荣耀V10真机上手图赏 参数配置分析详解
  9. 打开xshell一直没反应,xshell打开失败的问题
  10. 电商项目——商品规格管理