蓝牙模块的实现采用了CSR公司的单芯片BCM04。BCM04内嵌BlueCore04芯片,并提供SPI、UART/USB、PIO、PCM接口。BCM04中自带8Mb的闪存SST39VF800,工作电压为2.7~3.6V。在天线和发射机输出端之间接入平衡-不平衡转换器。带通滤波器一般是无源器件,它的作用是滤除接收机不需要的频带内的信号,为低噪声放大器(LNA)提供选择性信号起到减小干扰的作用。BCM04中采用了台湾ACX公司的集成带通滤波器+平衡不平衡转换器的器件FB2520,带通滤波器和平衡-不平衡转换器集成在一起集成度更高有效的减小了电路板的面积,该器件具有外型小巧,插入损耗低等优点,能够很好地完成平衡到不平衡端的转换和带通滤波的功能。BCM04中需要3.3V和 1.5V两种电压,其中1.5V是为蓝牙芯片和带通滤波器+平衡-不平衡转换器供电,3.3V为Flash芯片和蓝牙芯片的外围I/O脚提供电压。CPU与蓝牙模块接口电路图如图3所示。
图3 CPU与蓝牙接口的电路图
基于NIOSⅡ软核的FPGA芯片的SOPC设计
NIOSⅡ嵌入式处理器是FPGA生产厂商Altera公司推出的软核CPU,是一种面向用户的、可以灵活定制的通用RISC(精简指令集架构)嵌入式CPU。NIOSⅡ以软核方式提供给用户,并专为Altera的FPGA上实现做了优化,用于SOPC集成,最后在FPGA上实现。为完成设计要求,需要对处理器芯片进行配置。其SOPC Builder上的配置如图4所示。
图4 蓝牙通信模块的SOPC Builder上的配置图
SOPC设计包括以32位NIOS Ⅱ软核处理器为核心的嵌入式硬件配置、硬件设计、硬件仿真、软件设计和软件调试等。在SOPC Builder中定义了CPU、存储器接口(FLASH和SDRAM)、标准外围接口(蓝牙接口)、三态桥、硬软件程序下载口和定时器。
软件设计
蓝牙通信模块的软件设计主要集中在NIOS Ⅱ软核的驱动开发和蓝牙协议的转换上。Altera公司提供了包括硬件抽象层中字符模式器件、定时器件、文件子系统、以太网器件、DMA器件和Flash器件,并为每个器件提供一系列统一的初始化函数和访问函数接口。通过对这些接口的读写,可完成NIOS Ⅱ软核的驱动开发的开发。
首先初始化蓝牙模块。蓝牙模块加载了各种协议层后并不能工作,还需要根据不同的硬件设计对模块初始参数进行设置。初始参数设置又称为PSK设置,可以通过BlueLAB集成开发环境或者PS Key设置软件来实现,图5所示为PS Key设置界面。
图5 PS Key设置界面
蓝牙协议栈已固化在蓝牙芯片中,所以在初始化蓝牙模块后,就可通过蓝牙模块对工业现场的其他无线设备进行读写,更新蓝牙指令。以下程序是实现蓝牙串口驱动的所有函数指针。
typedef struct _HW_VTBL{
PVOID(*HWInit)(ULONG Identifier,PVOID pMDDCon-text,PHWOBJ pHWObj);
BOOL(*HWIoct1)(PVOID pHead,DWORD dwCode,
PBYTE pBufIn,DWORD dwLenIn,PBYTE pBufOut,DWORD
DwLenOut,PDWORDpdwActualOut);
} HW_VTBL,*PHW_VTBL;
//定义了蓝牙仿真串口DDSI函数的名称。
Const HW_VTBL BluetoothVTbl={
BluetoothInitSerial,
BluetoothIoctl
};
//用结构变量CTRLVTbl定义了控制端口的DDSI函数名列表
Const HW_VTBL CTRLVTbl={
CTRLInitSerial,
CTRLDeinit,
CTRLOpen,
CTRLClose,
CTRLIoctl
};
小结
蓝牙技术是一种无线数据与语音通信的开放性全球规范,它以低成本的近距离无线连接为基础,为固定与移动通信设备的通信环境建立了一个特别连接的短程无线技术。蓝牙技术具有低消费、低功耗、安全性高等特点。本设计在蓝牙技术的基础上,结合了嵌入NIOS Ⅱ软核的CPU,采用SOPC技术,可裁减、可扩充、可升级,并具备软硬件在系统中可编程的功能。FPGA芯片在蓝牙通信模块上的使用,使得通信模块在可根据工业现场实际需要更改CPU的配置成为可能,方便日后系统的软硬升级,延长了通信模块的使用寿命,为应付工业现场多变的环境提供了保证。