FPGA设计实例——基于FPGA的蓝牙通信实验_EGo1开发板上实现

FPGA设计实例——基于FPGA的蓝牙通信实验_EGo1开发板上实现

一、概述

本实验基于依元素科技有限公司的《蓝牙通信》实验进行改进,通过AT指令设置蓝牙模块的名称、查询蓝牙模块的地址等,然后利用EGo1开发板上的蓝牙模块与板卡进行串口通信,使用支持蓝牙4.0的手机与板卡上的蓝牙模块建立连接,并通过手机APP发送命令,控制FPGA板卡上的硬件外设。

二、实验原理

蓝牙无线技术是使用范围最广泛的全球短距离无线标准之一,EGo1开发板上板载的蓝牙模块是基于TI公司CC2541芯片的蓝牙4.0模块,具有256kb配置空间,遵循V4.0 BLE蓝牙规范。

本实验利用板卡上的蓝牙模块与外界支持蓝牙4.0标准的设备(如手机)进行交互。该蓝牙模块出厂默认配置为通过串口协议与FPGA进行通信,用户无需研究蓝牙相关协议与标准,只需要按照UART串口协议来处理发送与接收的数据即可,实验框图如图1所示。

图1 蓝牙通信实验的模块框图

本实验通过串口发送与串口接收模块来完成与蓝牙模块的数据传输,通过命令解析模块及命令响应模块来实现简单的串口命令的解析控制以及命令的执行,FPGA 在接收到蓝牙模块传输进来的串口数据后,会将相应数据以及命令响应通过蓝牙模块发送给与之连接的通信设备,在这个过程中采用 FIFO 来存储我们需要发送的数据。

在这个设计中,我们在串口协议基础上自定义了若干控制命令,以便于在远端设备上可以通过蓝牙对 FPGA 平台上的逻辑、外设以及接口进行控制。

主要包含以下命令:

(1)*Naaaa

(2)*Waaaaaaaa

上述2条命令中,星号(*)的作用是命令的起始位,N、W等大写字母作为命令的名称,小写字母a表示任意一个十六进制数。命令N后接4位十六进制数,即16bit数据,用于点亮板卡的LED灯,其后接16bit数据分别对应板卡上的16位LED灯;命令W后接8位十六进制数,即32bit数据,用于控制办卡上的七段数码管显示,其后接32bit数据分别对应板卡上8位七段数码管显示的数值。

三、实验平台搭建

3.1 EGo1 FPGA开发板

EGo1开发板的实物如图2所示,是依元素科技基于Xilinx Artix-7 FPGA研发的便携式数模混合基础教学平台,拥有丰富的外设:VGA接口、音频接口、USB-UART/JTAG接口、USB转PS2接口、2个4位数码管、16个LED灯、8个拨码开关、1个8位DSP开关、5个按键、1个模拟电压输入、1个DAC输出接口、SRAM存储器、SPI FLASH存储器、蓝牙模块和1个通用扩展接口。

EGo1开发板板载的FPGA芯片型号为Xilinx Artix-7系列XC7A35T-1CSG324,具有33280个逻辑单元、41600个寄存器、1800kb的BRAM和90个DSP等逻辑资源,可以实现较复杂的数字逻辑设计。

图2 EGo1开发板实物图

3.2 蓝牙模块介绍

EGo1上集成了蓝牙模块(BLE-CC41-A),位于开发板背面,FPGA通过串口和蓝牙模块进行通信。波特率支持1200,2400,4800,9600,14400,19200,38400,57600,115200和230400bps。串口缺省波特率为9600bps。该模块支持AT命令操作方法。EGo1开发板上的蓝牙模块原理图如图3所示。

图3 蓝牙模块电路原理图

3.3 蓝牙调试APP

在手机端安装蓝牙调试软件,本人使用的是“e调试”软件,如图4所示。

图4 蓝牙调试软件

3.4 查询/设置蓝牙模块的参数

使用AT指令查询和设置蓝牙模块的部分参数,为了方便查询和设置,将EGo1开发板的UART接口与蓝牙模块的UART接口交叉连接,代码如图5所示。

图5 查询/设置蓝牙模块参数的FPGA代码

拨动拨码开关对蓝牙进行复位,然后在电脑端打开串口调试助手,输入AT,返回OK;输入AT+NAME,查询名字,返回+NAME=<luoxing EGo1>;输入AT+NAME<my EGo1>,修改名字,返回+NAME=<my EGo1> OK,表示修改成功,也可以再次输入AT+NAME查看名字;最后输入AT+LADDR?查询地址,完成查询/设置蓝牙模块的参数,如图6所示。

图6 查询/设置蓝牙模块的参数

同时,还可以通过AT指令查询/设置蓝牙模块的波特率等参数,因为本实验暂不涉及,感兴趣的同学可以查看该蓝牙芯片对应的AT指令进行学习。

四、实验验证

使用依元素科技提供的蓝牙通信工程,工程总结界面如图7所示。

图7 蓝牙通信工程总结页面

将bit流文件下载到FPGA开发板中,SW1设置为低,SW0、SW2、SW3、SW4设置为高,首先波动拨码开关SW2(即代码中的sw_pin[2])对蓝牙模块进行复位,此时蓝牙处于Slave模式,蓝牙状态指示灯LED2闪烁较慢,开发板的拨码开关设置如图8所示。

图8 开发板的设置

在手机上打开e调试软件,根据蓝牙模块的名字或者地址,正确的与EGo1开发板上的蓝牙模块建立连接。前文已将蓝牙模块的名字设置为<my EGo1>,并且地址为04A316AA9C1F,点击进行连接即可,如图9所示。

图9 使用e调试软件建立与EGo1开发板的连接

在手机端输入*NF151,如图10所示,现象如图11所示,可以看出,LED灯的最右边为高位,最左边为低位,从右往左的亮灭分别为1111_0001_0101_0001,1代表点亮,0代表熄灭,与*NF151的设置一致。

图10 控制LED灯指令下发

图11 LED灯控制效果

在手机端输入*W87654321,如图12所示,现象如图13所示,数码管显示87654321,与设置一致,实验验证通过。

图12 控制数码管指令下发

图13 数码管控制效果

五、工程获取方法

点击链接:https://t.zsxq.com/ZaLiZ,加入知识星球——FPGA设计入门与提高,获取工程源码。

目前知识星球包括的优质FPGA工程如下:

【2-FPGA视频图像处理】_1_Sobel边缘检测

【3-FPGA数字信号处理】_1_DDS信号发生器

【3-FPGA数字信号处理】_2_CORDIC旋转模式实现sin和cos运算

【3-FPGA数字信号处理】_3_CORDIC向量模式实现arctan运算

【3-FPGA数字信号处理】_5_基于FPGA的CORDIC旋转模式实现sin和cos运算

【5-FPGA设计实例】_1_IIC OLED字符显示

【5-FPGA设计实例】_2_OLED 数字时钟

【5-FPGA设计实例】_3_DS18B20温度检测,OLED显示

【5-FPGA设计实例】_4_蓝牙通信_EGo1开发板

【5-FPGA设计实例】_5_超声波测距系统

【5-FPGA设计实例】_6_LCD1602驱动

Read more

前端无障碍性:让所有人都能使用你的网站

前端无障碍性:让所有人都能使用你的网站 毒舌时刻 前端无障碍性?这不是给残障人士用的吗? "我的网站不需要无障碍性,用户都是正常人"——结果被投诉歧视, "无障碍性太麻烦了,我没时间做"——结果失去了一部分用户, "无障碍性就是加几个alt标签而已"——结果网站在屏幕阅读器下完全不可用。 醒醒吧,无障碍性不是慈善,而是一种责任! 为什么你需要这个? * 法律合规:许多国家和地区都有无障碍性法规 * 扩大用户群体:让残障人士也能使用你的网站 * SEO优化:无障碍性好的网站更容易被搜索引擎收录 * 用户体验:对所有人都友好的设计,对正常人也有好处 反面教材 <!-- 反面教材:缺乏语义化HTML --> <div> <div>网站logo</div> <

AI 生成的 UI 太丑?3 步让你的前端秒变高级感

AI 生成的 UI 太丑?3 步让你的前端秒变高级感

🚀 AI 生成的 UI 太丑?3 步让你的前端秒变高级感 你是不是也遇到过这种情况:满心期待地用 AI 生成一个前端页面,结果得到的是一个土到掉渣的蓝紫色界面,丑到自己都看不下去?🤦‍♂️ 别担心,你不是一个人!这是目前 90% 开发者使用 AI 写前端时都会遇到的痛点。 好消息是,经过一番研究和实践,我们发现了一些有效的方法!通过几个简单的技巧,不需要手写任何 CSS,就能让 AI 帮你生成媲美专业设计师的 UI 界面。 今天就手把手教你 3 步搞定,让 AI 彻底告别 “AI 味”! 🧪 实验准备 工具准备 想要跟着实验,你需要准备: 1. Claude Code (2.0.55) 底层模型是 Minimax-M2

Clawdbot(Moltbot)源码部署全实测:从环境搭建到 WebChat 验证,避坑指南收好

Clawdbot(Moltbot)源码部署全实测:从环境搭建到 WebChat 验证,避坑指南收好

一、为啥折腾 Clawdbot? 最近刷技术圈总刷到 Clawdbot(后来也叫 Moltbot),说是能搭私人 AI 助手,支持 WhatsApp、Telegram 这些常用通道,还能跑在自己设备上,不用依赖第三方服务 —— 想着拉下来测试一下功能,顺便研究一下其源码的实现。 于是拉上 GitHub 仓库https://github.com/openclaw/openclaw,打算从源码部署试试,过程里踩了不少坑,干脆整理成记录,给同样想折腾的朋友避避坑。 二、源码部署前的准备:Windows 环境优先选 WSL2 一开始想直接用 Windows CMD 部署,结果装依赖时各种报错,查仓库文档才发现 Windows 推荐用 WSL2(Ubuntu/Debian 镜像就行),后续操作全在 WSL2 里完成: 1.

Flutter for OpenHarmony:shelf_web_socket 快速构建 WebSocket 服务端,实现端到端实时通信(WebSocket 服务器) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:shelf_web_socket 快速构建 WebSocket 服务端,实现端到端实时通信(WebSocket 服务器) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在移动应用开发中,我们通常扮演“客户端”的角色,去连接远程的 WebSocket 服务。但有时,我们需要在设备本身运行一个微型服务器,例如用于局域网内的设备发现、P2P 文件传输信令,或者在调试模式下作为数据广播源。 shelf_web_socket 是基于 Dart 标准 Web 服务器框架 shelf 的 WebSocket 处理器。它能让你在 Flutter 应用(包括 OpenHarmony)中轻松启动一个能够处理 WebSocket 连接的 HTTP 服务。 一、核心概念 * Shelf: Dart 的 Web 服务器中间件管道框架(类似 Express.