蓝牙具有广泛的应用程序,例如数据传输,无线音乐,设备控制等。蓝牙在此类应用程序中使用的原因是其易于实施,低功耗,最重要的是它的可用性,即几乎所有手机(无论是所有手机)它可以简单的功能手机或高级智能手机)配备蓝牙。
基于ARM 7的LPC2148是成功且流行的32位微控制器之一。它具有许多芯片功能。但是今天,我们将专注于串行通信,即LPC2146 MCU的UART功能。
在此项目中,我们将与基于ARM 7的MCU(即LPC2148)接口蓝牙模块。在后来的项目中,我们将使用此界面并开发一些高级项目。
蓝牙模块的主要应用之一是在家庭自动化和智能家居系统领域中,在该领域中,启用蓝牙的设备(如智能手机或平板电脑)可用于控制智能家居应用程序。
电路原理图
需要组件
由于我们在该项目中使用了LPC2148开发委员会,因此上述某些组件可能已经嵌入到董事会中。实施项目所需的组件如下:
- LPC2148基于微控制器的立场 - 单独或完整的开发委员会
- HC - 05蓝牙模块(任何基于UART的蓝牙模块)
- 8 X LED
- 8 x1kΩ电阻
- USB - 到 - 迷你USB电缆
- 电源
- 连接电线
- 带有“蓝牙控制器”应用程序的智能手机
电路设计
使用LPC2148的蓝牙模块接口的电路设计涉及HC - 05蓝牙模块与基于ARM7的MCU LPC2148之间的连接。完整电路设计的详细信息如下。
HC - 05蓝牙模块是基于UART的设备。因此,LPC2148和蓝牙模块之间的连接仅需要两条线。在LPC2148中,有两个UART模块:UART 0和UART 1.我们的开发板中的UART 0已连接到USB到串行转换器。
因此,我们将蓝牙模块连接到UART 1,即端口0引脚P0.8(引脚33)和P0.9(引脚34)。蓝牙模块的TX引脚连接到LPC2148的RXD1(P0.9 - PIN 34)。同样,蓝牙模块的Rx引脚连接到LPC2148的TXD1(P0.8 - Pin 33)。
注意:蓝牙模块的TX和RX引脚只能耐受3.3V。由于LPC2148 MCU的输出仅为3.3V,因此可以直接进行连接。
蓝牙模块具有 - 板3.3V调节器。因此,可以将5V电源给予模块。
为了证明蓝牙模块 / LPC2148和智能手机之间的数据成功传输,我们打开和关闭了很少的LED。由于董事会已经由LED组成,因此我们没有连接任何其他LED。
在开发委员会上,LED连接到Port1 Pins P1.18至P1.25。因此,我们将按照这些引脚编写程序。
项目的工作
该项目成功地证明了蓝牙模块与LPC2148的接口。它涉及LPC2148的UART模块。因此,建议阅读我们的UART教程对于LPC2148 MCU。
如电路设计中所述,蓝牙模块连接到LPC2148中的UART 1模块。当成功将蓝牙模块与智能手机配对时,我们可以配置手机中的应用程序以传输所需的数据。
在程序中,配置为当蓝牙模块接收“ 0”时,根据电路图将打开的所有LED。同样,当收到“ 1”时,所有LED将被关闭。
因此,正确配置UART模块很重要。另外,PLL模块用于生成CCLK和PCLK。我们的ARM PLL教程中解释了PLL模块和其他相关信息的配置。
代码
了解程序
该项目的编程部分包括配置GPIO引脚,PLL0模块,UART1模块并控制LED。我们将看到如何单独配置这些模块。
首先是PLL0模块。PLL0模块配置为生成系统时钟,即60 MHz的CCLK。因此,我们将启用PLL0模块,并设置乘数和分隔值。为此,我们将使用以下命令。
PLL0CON = 0x01;
PLL0CFG = 0x24;
一旦设置了初始化和乘数和分隔值的PLL0模块,下一步就是修复这些乘数和分隔值。为此,我们将使用以下提要序列。
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
现在,我们将在PLL0STAT寄存器的帮助下检查PLL0模块是否锁定到指定值,并且一旦锁定,我们将连接PLL模块。
while(!(pll0stat&0x00000400));
PLL0CON = 0x03;
写另一个供稿序列以锁定PLL0模块。现在,CCLK将以60 MHz振荡。
PLL0FEED = 0xAA;
PLL0FEED = 0x55;
最后,将外围时钟配置为复制系统时钟。
VPBDIV = 0x01;
我们要讨论的下一个模块是UART模块。如前所述,我们正在项目中使用UART1模块。
因此,第一步是使用Pinsel寄存器选择TX1和RX1引脚。
Pinsel0= 0x50000;
我们需要为数据传输设置UART框架格式。通过以下说明,我们将其设置为8个数据位,没有奇偶校验和1个停止位。
u1lcr = 3 |(1 << 7);
我们需要将波特率设置为9600桶。为此,将DLL和DLM值设置为如下。
u1dll = 110;
U1DLM = 1;
现在,为了更准确的波特率,设置了mulval和分裂值。
u1fdr =(mulval << 4)|Divaddval;
使用以下命令将所有值锁定。还启用了RX和TX FIFO用于数据传输和接收。
u1lcr&= 0x0f;
u1fcr = 0xc1;
有了这些命令,UART已成功设置,并准备接收和传输数据。下一步是读取接收到的数据并打开LED打开或关闭。
char c = uart1Read();
if(c ==‘0')
{
io1set = 0x03fc0000;
}
否则(c ==‘1')
{
io1clr = 0x03fc0000;
}
申请
- 将蓝牙模块与微控制器接口具有许多优点和应用。最好的例子是在智能家庭系统和家庭自动化系统的领域。
- 使用ARM7这样的强大处理器,可以将应用范围增加到工业,机器人和消费者等级应用。