KL25开发板芯片本身支持三个串口,uart0,uart1,uart2。其中uart0不太一样,在数据手册里面单独一章介绍;而uart1和uart2则是一样的。
我所使用的串口蓝牙模块是BC04,支持主从两种模式,通过硬件连接来决定是主模式还是从模式,波特率固定为9600。所以,要想与之通信,主机也必须是9600波特率。
这个模块既可以连在PC上,也可以连在开发板上,都可以用。不过它本身是TTL电平,如果要连上PC,需要转成232电压,然后交叉连接接在PC串口上。如果接单片机,则可以直接接在单片机的串口上,当然RXD和TXD也要交叉连接。
我们看一下引脚介绍:
这个介绍有点误导人。该模块的RXD引脚应该接单片机的TXD引脚,交叉连接才对。我这里使用的KL25的串口1连接这个模块。
我的KL25是3.3V供电,接上这个BC04串口蓝牙,设置为从模式。所以只连了3.3V,GND,TXD与RXD四个引脚。这个模块只要一通电,就会有一个LED不停闪烁,意思是等待蓝牙连接。
主机这端,我买了一个USB的蓝牙适配器,很便宜才12块钱。插上去之后,win7自动就能识别,驱动都不需要。win7自带有蓝牙传输软件,但是明显控制能力太差,所以我下载了最强悍的蓝牙工具:IVT Bluesoleil。
我们打开这个软件,然后打开本机的蓝牙,再搜索,就可以搜到单片机上的蓝牙。单片机上的蓝牙只要通电就会开启,不需要你手动打开。默认名称为:YFROBOT。
可以看到,主机蓝牙(中间黄色的圆代表它)支持九种服务。包括虚拟串口,传图片,组网等等。
而单片机的蓝牙只有一种服务。我们右键单击YFROBOT,选择“搜索服务”,会发现它只支持串口。右键单击串口图标,选择连接。两者就会连上,此时蓝牙模块的LED停止闪烁,进入常亮状态。这是在我笔记本上面的情况,实际在我的台式机上却还需要输入口令,默认是1234,才能连接上。台式机上是盗版win7,可见用起来还是不太方便。
配对连接之后,会有一个提示,指示该连接是基于COMM6(我的台式机是COM7),所以COMM6就是这对蓝牙的等效通信接口了,它实际上是PC给他虚拟出的一个接口。我们打开串口调试助手,波特率设为9600,打开串口6,就可以调试蓝牙了,看它是否正常工作。
连接上之后的蓝牙,其实就跟串口毫无二样,所以只需要将其当作串口开发就可以了。下面是KL25单片机的一个测试代码:
int main()
{
char count=0 ;
uart_init(UART1_BASE_PTR, 24000, 9600); //BUS时钟为24KKHZ
while (1)
{
uart_putchar( UART1_BASE_PTR,count); //单片机串口1发送
count++;
Delay1Us(20);
}
return 0;
}
烧进单片机之后,剩下的就是在PC端用串口调试助手打开串口6,就可以接收数据了。
需要注意的是:蓝牙通信模块连接好后,蓝牙模块在单片机上接的是串口1,所以单片机上要对串口1发送数据才对;而主机这边,蓝牙连接被虚拟为串口6,所以串口调试助手应该打开串口6接收数据。