一、概述
本实验基于《蓝牙通信》实验进行改进,通过 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 蓝牙模块电路原理图












