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

AI绘画报错

提示输出验证失败:CheckpointLoaderSimple: - 值不在列表中:ckpt_name: 'v1-5-pruned-emaonly-fp16.safetensors' 不在 ['anything-v5-PrtRE.safetensors'] 中 模型文件夹里面没模型 这是官方链接:v1-5-pruned-emaonly.safetensors https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main 点击同一行的小下载箭头。然后把文件放在:models/checkpoints文件夹里 你还需要标准的VAE文件,也就是:vae-ft-mse-840000-ema-pruned.safetensors https://huggingface.co/stabilityai/sd-vae-ft-mse-original/tree/main 这个文件放在:models/vae文件夹里 现在你已经拥有运行所需的一切了。慢慢来。你最初生成的图片会很糟糕。但是继续尝试,很快你就能得到很棒的结果。

从零开始使用ISSACLAB训练自己的机器人行走

从零开始使用ISSACLAB训练自己的机器人行走

ISAACLAB入门教程 作者:陈维耀 1. 环境配置 1.1 推荐配置 * 操作系统: Ubuntu 22.04 LTS * 显卡: NVIDIA RTX 4080或以上 1.2 ubuntu 22.04 LTS安装 参考ZEEKLOG的Ubuntu 16.04 LTS安装教程,将其中的ubuntu 16.04镜像文件替换为ubuntu 22.04镜像文件,其他步骤保持不变,建议/home与/usr的硬盘容量均不少于200G。 1.3 安装NVIDIA驱动 根据自身显卡型号与操作系统,选择对应的显卡驱动,建议选择550.xxx.xxx版本的显卡驱动,按照教程进行安装即可,安装完成后在终端输入nvidia-smi,若出现以下信息则表示驱动安装成功: Thu Jun 5

Java 大视界 -- Java 大数据在智能家居能源消耗趋势预测与节能策略优化中的应用(433)

Java 大视界 -- Java 大数据在智能家居能源消耗趋势预测与节能策略优化中的应用(433)

Java 大视界 -- Java 大数据在智能家居能源消耗趋势预测与节能策略优化中的应用(433) * 引言: * 正文: * 一、智能家居能源管理的核心痛点与 Java 大数据的价值 * 1.1 行业核心痛点(基于《2024 中国智能家居行业白皮书》) * 1.2 Java 大数据的核心价值(实战验证适配性) * 二、技术架构设计实战(纵向架构图) * 2.1 核心技术栈选型(生产压测验证版) * 2.2 关键技术亮点(博主实战总结) * 三、核心场景实战(附完整可运行代码) * 3.1 场景一:能耗趋势预测(线性回归 + LSTM 融合模型) * 3.1.1 业务需求 * 3.1.

在ESP32-S3部署mimiclaw,基于deepseek并用飞书机器人开展对话-feishu

在ESP32-S3部署mimiclaw,基于deepseek并用飞书机器人开展对话-feishu

最近mimiclaw火爆,其开发团队也在密集更新,我看3天前已经可以用“飞书机器人”对话交互了。 目前网络上能查到的部署资料相对滞后,现在将飞书机器人的部署整理如下: 1. 前提 已经安装好ESP-IDF,并支持vscode编译esp32固件。 2. api-key准备 * 注册deepseek, * 创建APIkey, * 并充值,新注册的用户余额为零,无法使用 3. 飞书机器人 我是在飞书个人版中,创建的机器人。 1. 访问飞书开放平台,单击创建企业自建应用,填写应用名称和描述,选择应用图标,单击创建。 2. 左侧导航栏单击凭证与基础信息 页面,复制App ID(格式如 cli_xxx)和App Secret。 3. 配置事件订阅。 1. 在飞书开放平台左侧导航栏单击事件与回调,在事件配置页签中单击订阅方式,选择使用 长连接 接收事件,单击保存。 2. 在事件配置页面,单击添加事件,