蓝牙 linux开发板,开源双模蓝牙协议栈 - 蓝牙模组以及开发板使用介绍

零. 概述

本文章主要讲下我们的开发版(STM32F1+CSR8311)以及蓝牙模组扩展版(CSR8311)的功能以及使用简短说明

一. 声明

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

6c1caa55979fc879969decad820c5e23.png

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

第二篇: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)。

317534303fa3db47449a41235a8d97e0.png

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

蓝牙交流扣扣群:970324688

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

二.蓝牙开发板介绍

1ea83d70cf13f08b7a60de4e01ede300.png

功能分布如下:

① TYPE C USB转串口调试接口

② TYPE C USB DEVICE接口,可实现SPI FLASH当作U盘使用

③ Reset button

④ 电源开关

⑤ ST-LINK下载接口

⑥ USER button

⑦ ADC插槽

⑧ 喇叭左右声道接口

⑨ Line-in & 耳机接口

⑩ 蓝牙CSR8311模块扩展板

⑪ OLED 屏幕

⑫ SDIO Wi-Fi接口

⑬ STM32 F103RET6(ROM 512K,RAM 64K)

⑭ WM8960 codec ic

STM32使用我们开发板板子连接图:

c7af7f15a3887d87919ed49278f66ebf.png

PC端需要以下几个软件:

1)编译器,STM32使用的编译器,目前我们开发版是用MDK5.25(keil5.25),如图:

27000b70f990ed5662b07b3d6e0999a7.png

我们已经把MDK软件放在开发资料中的,包括MDK软件本身,MDK和谐软件,STM32F1的pack封包,打开工程以前需要先安装这个。

2) ST link驱动(下载程序到STM32的时候用),通过Keil下载到STM32的

3) 串口工具,用于串口工具通过AT来控制STM32,我们已经在资料中提供了VCOM以及putty

4) 蓝牙上位机(自带串口功能),方便了用带UI的画面来学习操作蓝牙,而且带调试日志功能,UI如下(暂时,后续完善不会更新到这个图片)

66922ec21e6876f08b394f1422812e88.png

三. 蓝牙模组扩展版介绍

c62d84da645bf7c703dad3b02ebfb6c1.png

① CSR8311模组

② CSR8311复位按键

③ CSR8311 接口图

④ 喇叭左右声道

⑤ Line-in & 耳机接口

目前我们的模组我是在电脑端的ubuntu虚拟机来跑协议栈,接线图如下

eae88655d3d05547f335f1ffb85ed62c.png

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

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,给你看下原理图你就明白了·,我们的蓝牙扩展的丝印是站在STM32角度来的。

4fc4b73e838429718a9d980322011c0a.png

9aac7869940075685c8e7a09d986e2e8.png

Linux ubuntu用默认的gcc就行了·,

Linux arm板要用交叉编译器

注意:供电一定要5V。

我们399跟199开发板的区别:

399是STM32F103RET6+蓝牙模组扩展版

199是蓝牙模组扩展板

所以399是把蓝牙协议栈(bt host跑在STM32中),而199需要你自己接一个MCU或者你在ubuntu虚拟机中跑协议栈(Linux版本我们也做了协议栈的一个版本)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摘 要:基于对Linux蓝牙协议栈BlueZ 源代码的分析,给出BlueZ的组织结构和特点。分析蓝牙USB 传输驱动机制和数据处理过程, 给出实现蓝牙设备驱动的重要数据结构和流程,并总结Linux 下开发蓝牙USB 设备驱动的一般方法和关键技术。 关键词:Linux 系统;蓝牙协议栈;设备驱动 USB Device Driver for Linux Bluetooth Stack LIANG Jun-xue, YU Bin (Institute of Electronic Technology, PLA Information Engineering University, Zhengzhou 450004) 【Abstract】This paper depicts the structure and characteristics of BlueZ based on analyzing the source code of Linux bluetooth stack BlueZ. It analyzes the implementation of bluetooth USB transport driver scheme and data processing procedure in detail, and gives the key data structure and implementation of bluetooth device driver. It summarizes the approach of developing Linux bluetooth USB device driver and the key technology. 【Key words】Linux system; bluetooth stack; device driver 计 算 机 工 程 Computer Engineering 第 34 卷 第 9 期 Vol.34 No.9 2008 年 5 月 May 2008 ·开发研究与设计技术· 文章编号:1000—3428(2008)09—0273—03 文献标识码:A 中图分类号:TP391 1 概述 蓝牙技术是开放式通信规范,而 Linux 是开放源码的操 作系统。廉价设备与免费软件的结合,促进了蓝牙技术和 Linux 的发展与融合。 Linux最早的蓝牙协议栈是由Axis Communication Inc在 1999 年发布的 OpenBT 协议栈。 随后, IBM 发布了 BlueDrekar 协议栈,但没有公开其源码。Qualcomm Incorporated 在 2001 年发布的 BlueZ 协议栈被接纳为 2.4.6 内核的一部分。此外, Rappore Technology 及 Nokia 的 Affix Bluetooth Stack 都是 Linux 系统下的蓝牙协议栈,应用在不同的设备和领域中。 BlueZ 是 Linux 的官方蓝牙协议栈,也是目前应用最广 泛的协议栈,几乎支持所有已通过认证的蓝牙设备。对于基 于主机的蓝牙应用,目前常见的硬件接口有 UART, USB 和 PC 卡等,USB 作为 PC 的标准外设接口,具有连接方便、兼 容性好和支持高速设备等特点,已广泛应用于蓝牙设备。 目前对 Linux 下 USB 设备驱动的研究已较为广泛而深 入[1-4] ,但对 Linux 下的蓝牙设备驱动还没有专门的研究。本 文在分析 USB 设备驱动和蓝牙协议栈的基础上,总结了 Linux 下开发蓝牙 USB 驱动程序的一般方法,并深入剖析了 其关键技术。 2 Linux 蓝牙协议栈 BlueZ 简介 BlueZ 目前已成为一个开放性的源码工程。它可以很好 地在 Linux 支持的各种体系的硬件平台下运行,包括各种单 处理器平台、多处理器平台及超线程系统。 BlueZ 由多个独立的模块组成,内核空间主要包括设备 驱动层、蓝牙核心及 HCI 层、L2CAP 与 SCO 音频层、 RFCOMM, BNEP, CMTP 与 HIDP 层、通用蓝牙 SDP 库和后 台服务及面向所有层的标准套接字接口;在用户空间提供了 蓝牙配置、测试及协议分析等工具。其组织结构如图 1 所示, BlueZ 没有实现专门的 SDP 层,而是将其实现为运行在后台 的蓝牙服务库例程(图 1 没有描述该后台服务)。 RFOMM 层支 持标准的套接口,并提供了串行仿真 TTY 接口,这使串行端 口应用程序和协议可以不加更改地运行在蓝牙设备上,例如 通过点对点协议 PPP 可实现基于 TCP/IP 协议簇的所有网络 应用。BNEP 层实现蓝牙的以太网仿真,TCP/IP 可以直接 运行于其上。 USB设备驱动 (hci_usb.o) L2CAP层(l2cap.o) RFCOMM层 (rfcomm.o) BNEP层 (bnep.o) CMTP层 (cmtp.o) 串口设备驱动 (hci_uart.o) 虚拟串口设备驱动 (hci_vhci.o) 音频 socket RFCOMM socket BNEP socket CMTP socket L2CAP socket HCI socket 内核 空间 用户 空间 串口设备 CAPI设备 输入设备 网络设备 HDIP socket 音频设备 AF_BLUETOOTH socket 音频层(sco.o) PPP TCP/IP AF_INET socket BNEP层 (bnep.o) 其他设备驱动 (bluecard_cs.o等) BlueZ工具和实用程序 HDIP层 (hdip.o) BlueZ核心 及HCI层(bluez.o/bluetooth.o) 图 1 BlueZ 组织结构 3 蓝牙 USB 设备驱动 设备驱动程序在 Linux 内核中起着重要作用,它使某个 硬件能响应一个定义良好的内部编程接口。这些接口隐藏了 设备的工作细节,用户通过一组独立于特定驱动程序的标准 调用来操作设备。而将这些调用映射到作用于实际硬件设备 的特有操作上,则是驱动程序的任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值