news 2026/4/18 8:14:42

GM-3568JHF丨ARM+FPGA异构开发板系列教程:外设教程 05 蓝牙

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GM-3568JHF丨ARM+FPGA异构开发板系列教程:外设教程 05 蓝牙

GM-3568JHF 开发板集成了 RTL8723DU 无线通信模块,该模块不仅提供 WIFI 功能,同时还集成了蓝牙功能。蓝牙模块支持经典蓝牙和低功耗蓝牙(BLE)协议,为开发板提供了丰富的短距离无线通信能力。

本篇教程基于ShiMetaPi 研发的FPGA+ARM开发板——GM-3568JHF展开。

1 蓝牙模块概述

1.1 RTL8723DU 蓝牙技术规格

参数规格
芯片型号Realtek RTL8723DU
蓝牙版本Bluetooth 4.2
协议支持Classic Bluetooth + BLE (Bluetooth Low Energy)
工作频段2.4GHz ISM 频段 (2.402~2.480GHz)
调制方式FHSS (跳频扩频)
发射功率Class 2 (最大 4dBm)
接收灵敏度-90dBm @ 0.1% BER
传输距离10 米 (Class 2)
数据速率最大 3Mbps (EDR)

1.2 驱动和软件支持

Linux 蓝牙协议栈

  • BlueZ: Linux 标准蓝牙协议栈

  • 内核支持: 内核原生驱动支持

  • 用户空间工具: bluetoothctl, hciconfig, hcitool 等

  • D-Bus 接口: 标准 D-Bus API 接口

支持的应用场景

  • 音频设备: 蓝牙耳机、音箱连接

  • 输入设备: 蓝牙键盘、鼠标

  • 文件传输: 与手机、电脑文件互传

  • 串口通信: 蓝牙串口数据传输

  • IoT 应用: BLE 传感器数据采集

2 蓝牙连接配置

开发板已适配 RTL8723DU 模块,蓝牙驱动和协议栈已完成适配配置。

2.1 连接测试

测试需要一部智能手机(该小节测试使用的是安卓手机),打开手机蓝牙功能,并且打开开发板蓝牙功能,然后进行连接,如下图所示:

开发板端:

手机端:

2.2 数据收发测试

首先在 home/linaro 文件夹下新建一个 bluetooth_test.txt 文件,内容为:bluetooth_test

1)文件发送

开发板通过蓝牙将 bluetooth_test.txt 发送到手机,手机接收

开发板端:

手机端:

查看文件内容是否一致:

2)文件接收

手机通过蓝牙将 bluetooth_test.txt 发送到开发板,开发板接收

手机端:

开发板端:

2.3 命令行蓝牙配置

hciconfig 和 hcitool

# 查看蓝牙适配器信息 hciconfig -a # 启用蓝牙适配器 sudo hciconfig hci0 up # 设置可发现模式 sudo hciconfig hci0 piscan # 扫描附近设备 hcitool scan # 查看设备信息 hcitool info XX:XX:XX:XX:XX:XX # 检查连接状态 hcitool con

配对和认证

# 使用 simple-agent 配对 sudo simple-agent hci0 XX:XX:XX:XX:XX:XX # 或使用 bluez-simple-agent bluez-simple-agent hci0 XX:XX:XX:XX:XX:XX

3 蓝牙音频应用

3.1 连接蓝牙音频设备

安装音频支持包

# 安装 PulseAudio 蓝牙模块 sudo apt-get install pulseaudio-module-bluetooth # 重启 PulseAudio pulseaudio -k pulseaudio --start

配置音频设备

# 查看音频设备 pactl list short sinks # 设置默认音频输出 pactl set-default-sink bluez_sink.XX_XX_XX_XX_XX_XX.a2dp_sink # 播放测试音频 speaker-test -t wav -c 2 # 使用 aplay 播放音频文件 aplay /usr/share/sounds/alsa/Front_Left.wav

3.2 A2DP音频流传输

# 连接 A2DP 设备后,检查音频配置 bluetoothctl [bluetooth]# info XX:XX:XX:XX:XX:XX # 在 PulseAudio 中查看蓝牙音频设备 pactl list sinks | grep -A 10 bluez # 播放音频到蓝牙设备 mpg123 -a bluez_sink.XX_XX_XX_XX_XX_XX.a2dp_sink music.mp3

4 BLE (低功耗蓝牙) 应用

BLE 设备扫描和连接

使用 gatttool

# 扫描 BLE 设备 sudo hcitool lescan # 连接 BLE 设备 gatttool -b XX:XX:XX:XX:XX:XX -I # 在 gatttool 交互模式中: [XX:XX:XX:XX:XX:XX][LE]> connect [XX:XX:XX:XX:XX:XX][LE]> primary # 列出主要服务 [XX:XX:XX:XX:XX:XX][LE]> characteristics # 列出特征值 [XX:XX:XX:XX:XX:XX][LE]> char-read-hnd 0x0010 # 读取特征值 [XX:XX:XX:XX:XX:XX][LE]> char-write-req 0x0010 0100 # 写入特征值

使用 bluetoothctl 进行 BLE 操作

bluetoothctl [bluetooth]# scan on [bluetooth]# connect XX:XX:XX:XX:XX:XX [bluetooth]# gatt list-attributes [bluetooth]# gatt select-attribute /org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0010/char0011 [bluetooth]# gatt read [bluetooth]# gatt write "0x01 0x02"

5 故障排除

5.1 蓝牙模块无法识别

检查步骤:

# 检查 USB 设备 lsusb | grep Realtek # 检查蓝牙适配器 hciconfig -a # 检查内核模块 lsmod | grep bluetooth # 手动加载蓝牙模块 sudo modprobe bluetooth sudo modprobe btusb # 检查蓝牙服务状态 sudo systemctl status bluetooth

5.2 设备配对失败

可能原因和解决方案:

# 重置蓝牙适配器 sudo hciconfig hci0 reset # 清除配对缓存 sudo rm -rf /var/lib/bluetooth/*/cache # 重启蓝牙服务 sudo systemctl restart bluetooth # 检查认证代理 ps aux | grep agent

5.3 音频连接问题

解决步骤:

# 检查 PulseAudio 模块 pactl list modules | grep bluetooth # 重新加载蓝牙模块 pactl unload-module module-bluetooth-discover pactl load-module module-bluetooth-discover # 检查音频配置文件 bluetoothctl [bluetooth]# info XX:XX:XX:XX:XX:XX

5.4 连接不稳定

优化建议:

# 检查信号强度 hcitool rssi XX:XX:XX:XX:XX:XX # 调整功率管理 echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="d723", ATTR{power/autosuspend}="-1"' | sudo tee /etc/udev/rules.d/50-usb-bluetooth.rules # 重启 udev 服务 sudo udevadm control --reload-rules

5.5 文件传输失败

检查和修复:

# 检查 OBEX 服务 sudo systemctl status obex # 安装 OBEX 工具 sudo apt-get install obexftp obex-data-server # 启动 OBEX 服务 obex-data-server --auto-accept

原文链接:

https://forum.shimetapi.cn/wiki/zh/fpga-arm/GM-3568JHF/Peripherals/ch05-%E8%93%9D%E7%89%99.html

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:35:38

一文说清keil编译器下载v5.06安装全过程

从零开始搭建Keil开发环境:手把手带你装好MDK v5.06 你是不是也遇到过这种情况?刚接手一个STM32项目,前辈留下的工程是用Keil写的,而你的电脑上啥都没有。网上搜“keil编译器下载v5.06”,结果跳出来一堆广告、捆绑软件…

作者头像 李华
网站建设 2026/4/18 3:26:55

Protel99SE安装环境搭建:入门必看操作指南

如何在现代Windows系统上成功安装Protel99SE?这份实战指南讲透了所有坑 你是不是也遇到过这种情况:刚下载好Protel99SE的安装包,满怀期待地双击 setup.exe ,结果弹出“无法初始化数据库”或直接闪退?别急——这几乎…

作者头像 李华
网站建设 2026/4/18 3:32:41

树莓派4b安装系统时Raspberry Pi Imager的正确打开方式

树莓派4B系统安装不翻车:Raspberry Pi Imager 的实战指南 你有没有经历过这样的场景? 新买的树莓派4B到手,满心欢喜插上电源,却发现屏幕黑屏、SSH连不上、Wi-Fi死活连不到——最后只能灰头土脸地重新烧卡。别急,问题…

作者头像 李华
网站建设 2026/4/18 3:29:05

ARM架构支持情况:能否在树莓派上运行?

ARM架构支持情况:能否在树莓派上运行? 在智能家居设备日益复杂的今天,确保无线连接的稳定性已成为一大设计挑战。然而,在边缘计算与本地AI应用快速崛起的当下,另一个问题正悄然浮现:我们能否在像树莓派这样…

作者头像 李华
网站建设 2026/4/18 3:32:25

vivado2022.2安装教程:基于FPGA逻辑设计的最小化安装方案

Vivado 2022.2 精简安装实战:为FPGA逻辑设计打造轻量高效开发环境 你是不是也遇到过这种情况——想在笔记本上装个Vivado做点基础的Verilog开发,结果发现安装包动辄60GB起步,等了快两个小时才装完一半,最后硬盘直接红了&#xff…

作者头像 李华
网站建设 2026/4/18 3:26:12

零基础实现8位加法器(Verilog版)

从零开始造一台“计算器”:用Verilog实现一个8位加法器你有没有想过,计算机是怎么做加法的?不是打开手机计算器点两下那种——而是从最底层的逻辑门开始,一步步搭出能真正把两个数字相加的电路。这听起来像是芯片设计师才该操心的…

作者头像 李华