FPGA——HC-05蓝牙串口实验

HC-05蓝牙模块

FPGA——HC-05蓝牙串口实验_第1张图片
买来的模块背面就长这样子,总共有六个引脚,实际只用四个脚(RXD、TXD、GND和VCC)就可以进行数据的收发,以默认的9600bps的波特率,由于目前项目对速度要求不高,因此也没有深入研究AT指令等。
关于蓝牙模块的协议其实就是一个串口协议,在蓝牙配对成功后,就相当于以无线的方式进行串口通信。关于串口协议可参考我之前的一篇博客:串口回环

蓝牙串口实验

做这个实验的目的就是更好地理解蓝牙即串口这个概念。实验的思路框图如下:
FPGA——HC-05蓝牙串口实验_第2张图片

思路很简单,用一组传统的uart串口连接PC,HC-05连接一台手机。当通过连接PC的uart给FPGA发送数据时,把这个收到的数据发到HC-05的发送模块,通过hc05_tx输出到蓝牙模块;而当手机端发给HC-05数据时,会通过rx_hc05模块接收到数据,再把这个数据送到串口发送模块tx_uart和数码管显示模块smg_disp,同步显示在数码管上。这样,我们就将FPGA作为通道,间接实现了PC与手机端的通信。

顶层模块

module	bluetooth(
		input					clk				,
		input					reset			,
		input					hc05_rx			,
		input					uart_rx			,
		output	logic			hc05_tx			,
		output	logic			uart_tx			,
		output	logic	[ 7:0]	seg_sel			,
		output	logic	[ 6:0]	seg_ment	
);
		logic			[ 7:0]	data		;
		logic					data_vld	;
		logic			[ 7:0]	rx_data		;
		logic					rx_vld		;
		/*
		auto_tx					auto_tx_inst
		(
			.clk				(clk		),
			.reset	            (reset		),
			.data	            (data		),
			.data_vld           (data_vld	)
		);
		*/
		tx						tx_inst_hc05
		(
			.clk				(clk		),
			.reset	            (reset		),
			.rx_vld	            (data_vld	),
			.rx_data	        (data		),
			.tx                 (hc05_tx	)
		);
		
		tx						tx_inst_uart
		(
			.clk				(clk		),
			.reset	            (reset		),
			.rx_vld	            (rx_vld		),
			.rx_data	        (rx_data	),
			.tx                 (uart_tx	)
		);
		
		rx						rx_inst_hc05
		(
			 .clk				(clk		),
			 .reset	            (reset		),
			 .rx		        (hc05_rx	),
			 .rx_data	        (rx_data	),
			 .rx_vld	        (rx_vld		)
		);
		
		rx						rx_inst_uart
		(
			.clk				(clk		),	
			.reset	            (reset	    ),
			.rx		            (uart_rx	),
			.rx_data	        (data		),
			.rx_vld	            (data_vld	)
		);
		
		smg_disp				smg_disp_inst
		(
			 .clk				(clk		),
			 .reset	            (reset		),
			 .rx_data	        (rx_data	),
			 .data_vld          (rx_vld		),
			 .seg_sel	        (seg_sel	),
			 .seg_ment          (seg_ment	)
		);
		
		
endmodule
		
		
		
		

从我顶层模块例化的模块可以看出,不管是uart还是hc05的tx和rx模块,例化的都是同一个原模块,只是输入输出变了而已,这样还是验证一句话:蓝牙即串口

上板验证

在连接hc-05模块时要特别注意RXD和TXD引脚的连接,模块上标出的TXD引脚是模块的输出脚,是FPGA的输入,因此对应hc05_rx脚,而模块的RXD是作为FPGA的输出,因此对应hc05_tx脚,注意不要接反了。

所需软件:友善串口调试助手、SPP蓝牙串口。

首先,通过串口调试助手发送66给FPGA,按照我们的设计,连上hc_05的手机端会收到66(数据都是16进制)。然后手机端通过app发送88给FPGA,这时PC上的串口调试助手会收到88这个数据,并且数码管显示88。
FPGA——HC-05蓝牙串口实验_第3张图片
FPGA——HC-05蓝牙串口实验_第4张图片
FPGA——HC-05蓝牙串口实验_第5张图片
实验成功,所以蓝牙只是串口的另外一种形式,它遵循的还是串口协议。
附上源码,有兴趣的朋友可以下载 蓝牙串口源码

你可能感兴趣的:(FPGA,蓝牙,fpga)