蓝牙协议栈模组在linux ubuntu 跑蓝牙协议栈 --传统蓝牙搜索演示以及实现原理
零. 概述
主要介绍下用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 跑蓝牙协议栈 --传统蓝牙搜索演示以及实现原理相关推荐
- esp32语音控制_评测ESPRESSIF 乐鑫ESP32-WROVER WIFI+蓝牙通用模组
前言:之前小编也说过国内ESPRESSIF 乐鑫的WIFI方案是目前在物联网中最受欢迎的性价比WiFi解决方案之一,所以今天的主角要说的是ESP32-WROVER-IB WIFI+蓝牙通用模组.它的功 ...
- 蓝牙协议栈开发板 STM32F1 跑蓝牙协议栈 --传统蓝牙搜索演示以及实现原理
零. 概述 主要介绍下蓝牙协议栈开发板跑传统蓝牙搜索AT指令以及上位机操作步骤,以及原理 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝 ...
- TI CC2640R2F-Q1车规级蓝牙WIFI模组介绍
汽车电子产品的价格普遍比较消费类都较贵,通常有工规和车规之分,今天来聊聊车规级芯片贵在哪里. 一.车规的验证标准 AEC-Q100 针对有源(Active Device)元件的要求 AEC-Q200 ...
- 猜解小米5.99元蓝牙Mesh模组
源文链接: https://mp.weixin.qq.com/s?__biz=MzI3NDE2NDMwNQ==&tempkey=MTAzNl90Z1RhQkZSQ2JxS3dybTFOZDR ...
- EFR32BG22 BLE模组(低功耗蓝牙通信模组)AT指令测试
BG22Ax低功耗蓝牙模组 BG22A系列模组是基于Silicon labs公司EFR32BG22系列芯片研发的低功耗蓝牙(BLE)射频模块. 芯片主要特点: 支持完整的BLE 5.1--AOA,AO ...
- UA287Q蓝牙模组,UA800 Wi-Fi模组助力扫地机器人方案,为传统电器插上“智能”翅膀
一屋不扫,何以扫天下? 随着人们生活水平的日益提升,大众对智能化的追求也越来越高,扫地机器人这样的智能家居产品便应运而生,它的出现,为我们带来更加便利.舒适的家居体验.接下来,我们就一起来看下,何为扫 ...
- 广和通5G模组FM150-AE在Win11下的短信和通话演示
关键词:广和通 5G 高通芯片组 FM150 短信 text 通话 拨号 概述:5G模组主要用于跑数据流量,但其实基础的短信功能也还是支持的.而且,虽然没有音频接口,但是呼入呼出的提 ...
- 广和通5G模组FM650-CN在Win11下的短信和通话演示
关键词:广和通 5G 高通芯片组 FM650 短信 text 通话 拨号 概述:5G模组主要用于跑数据流量,但其实基础的短信功能也还是支持的.而且,虽然没有音频接口,但是呼入呼出的提 ...
- 移远5G模组RM500U-CN在Win11下的短信和通话演示
关键词:移远 5G 展锐芯片组 RM500U-CN 短信 text 通话 拨号 概述:5G模组主要用于跑数据流量,但其实基础的短信功能也还是支持的.而且,虽然没有音频接口,但是呼入呼 ...
最新文章
- 武汉大学2010年数学分析试题解答
- java获取当前tomcat线程pid_java 查看tomcat线程信息(示例代码)
- 【LeetCode笔记】剑指 Offer 13-. 机器人的运动范围 (Java、dfs)
- python 没有控件_PyQt自定义控件未显示
- 编程初学者必须知道的十件事
- HTTP异步链接池发送HTTP外部请求,获取本地ip导致HTTP外部请求很慢怎么解决?
- OptiStruct 11.0有限元优化分析视频教程
- 微信小程序商城毕业设计毕设作品(6)任务书
- 当c语言学到大成时,教孩子学编程(信息学奥赛C语言版)
- 24年未遇之奇景再等等 Intel旗舰显卡曝5-6月发布
- Redhat下小企鹅输入法的安装
- E-R图转化为关系模型
- 金融知识入门之基金基础概念
- html 带边框的梯形,css clip-path画带边框梯形多边形
- 席裕庚《预测控制》学习记录 (一)-基于阶跃响应的动态矩阵控制(DMC)包含仿真
- 【转】Windows系统中简单卷、带区卷、跨区卷、镜像卷的测试对比
- Gradle配置之常见问题-Could not resolve com.android.tools.build:gradle
- CMakeList 中引用系统环境变量中的 include 文件,以及 lib 文件
- Object类中的五种方法
- 【蓝桥杯JavaB组真题详解】振兴中华(2013)