This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F6638与蓝牙串口通信

我准备用蓝牙做一个和安卓手机通信的软件,用来控制小车,用的是TI提供的开发板还有HC05蓝牙模块,在IAR下进行编写,但是蓝牙和430一直不能通,我测试过蓝牙模块是没有问题的,请问我应该怎么解决这个问题

我的串口设置函数是这么写的,会不会这里有问题

while(BAKCTL & LOCKIO)    // Unlock XT1 pins for operation
BAKCTL &= ~(LOCKIO);
P4DIR|=BIT1;
P4OUT|=BIT1;
UCSCTL6 &= ~(XT1OFF);    // XT1 On
UCSCTL6 |= XCAP_3;    // Internal load cap
// Loop until XT1 fault flag is cleared
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
  // Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG);   // Test oscillator fault flag

UCA0CTL1 |= UCSWRST;   // **Put state machine in reset**
UCA0CTL1 |= UCSSEL_1;   // CLK = ACLK
UCA0BR0 = 0x03; // 32kHz/9600=3.41 (see User's Guide)
UCA0BR1 = 0x00; //
UCA0MCTL = UCBRS_3+UCBRF_0;   // Modulation UCBRSx=3, UCBRFx=0
P2SEL|=0x30;
P2DIR|=0x10;
UCA0CTL1 &= ~UCSWRST;   // **Initialize USCI state machine**
UCA0IE |= UCRXIE;   // Enable USCI_A0 RX interrupt

  • 你这个程序给人的感觉有点怪,请按照TI提供的例程首先初始化好系统时钟,程序中系统时钟初始化需要仔细看一下。串口初始化按照例程配置即可。

    另外蓝牙模块的波特率和串口需要一致。还有蓝牙模块上是否有功能引脚设置模块是传输数据还是AT指令控制,需要检查一下此引脚的电平。

    还有开发板子上此串口是否复用,通过跳线选择仅链接串口功能,如果串口和其他电路相连容易影响串口通信

  • 程序我修改了一下,现在可以通过串口和计算机通信,但是蓝牙模块和430之间仍然不通,蓝牙的设置我检查过了,将蓝牙接在电脑上,可以通过串口助手向手机发送,手机端也可以接收到,同时手机也能向蓝牙发送,串口助手也能收到。430波特率和数据格式的设置我都按电脑与蓝牙通信的格式设置了,但是还是不行...

    代码修改后如下:

    while(BAKCTL & LOCKBAK) // Unlock XT1 pins for operation
    BAKCTL &= ~(LOCKBAK);
    UCSCTL6 &= ~(XT1OFF); // XT1 On
    UCSCTL6 |= XCAP_3; // Internal load cap
    // Loop until XT1 fault flag is cleared
    do
    {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
    // Clear XT2,XT1,DCO fault flags
    SFRIFG1 &= ~OFIFG; // Clear fault flags
    }while (SFRIFG1&OFIFG); // Test oscillator fault flag

    Port_Mapping();

    P2SEL |= 0x03; // Assign P2.0 to UCA0TXD and...
    //P2DIR |= 0x03; // P2.1 to UCA0RXD

    UCA0CTL1 |= UCSWRST; // **Put state machine in reset**
    UCA0CTL1 |= UCSSEL_2; // SMCLK
    UCA0BR0 = 0x68; // 1MHz 9600 (see User's Guide)
    UCA0BR1 = 0; // 1MHz 9600
    UCA0MCTL = UCBRS_1 + UCBRF_0 + UCOS16; // Modln UCBRSx=0, UCBRFx=0,
    // over sampling
    UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
    UCA0IE |= UCRXIE; // Enable USCI_A0 RX interrupt

  • 你好,我想问一下你的问题最终解决了吗?还是因为芯片MSP430不能与HC-05联用呢?因为我也正准备做这方面的开发,所以想请教一下。能不能加一下你QQ?

  • 你好,我最近也在做这个工作,可以加个好友交流一下吗?