您好!
我们一直在努力通过使用 AT 命令(串行命令)运行的蓝牙设备来实现"hello world"。 更令人尴尬的是、我们的代码已经在工作了、因为这已经是一款商业设备了。 由于淘汰、我们需要更新器件、但甚至无法单步执行代码来获取对我们使用原始(过时的蓝牙模块)发送的命令的响应。
我们知道已淘汰的 BT 模块(Microchip RN42)已正确配置、因为我们可以直接从计算机以115k 的波特率向其发送串行命令。 因此我们可以更改名称并将其置于命令模式(使用$$$)。 仅当它连接到 MSP430时、我们无法得到 响应 。
对于我们需要发送的第一个命令$$$(将其置于命令模式)、 下面的代码中以粗体显示了预期的响应。 基本上、当我们从微控制器发送命令$$$时、BT 模块应该 响应"end"。 但是、我们永远不会得到期望的字符。
为调试该问题所做的工作。
我们在 Code Composer Studio 中打开了一个 COM 端口,但我们可以得到一个 blip (没有任何更改)。 我们尝试 在终端中键入$$$字符、但仍然没有得到 响应。
---当我们单步执行代码时,关键的"表达式"没有 改变到任何预期,尽管它们似乎发生了变化。 传输第一个$后的示例如下所示。
问题
如何在 COM 端口终端中键入字符、以便将它们发送到远程蓝牙模块。 我是否只需键入下面显示的空格、但看不到键入的任何字符?
另一个问题是、是否有更好的方法来捕获错误或导致此错误的原因?
void ATxBT (void){
//---------------------------------------------------------------
//此命令会使器件进入命令模式,返回"CMD"
重复= 1;
while (重复){
SendString ("$$$"、1);
}
}
void SendString (const char * s、int ATstate)
{
接收的易失性字符= 0;
Volatile uint32_t WaitCounter = 0;
无符号字符 g;
while (* s){
G=(*s++);
Transmit232(g);
}
WaitCounter = 0x00000000;
while (!((UCA1IFG&UCRXIFG)|((WaitCounter == 0xFFFFF))){
等待计数器++;
}
接收= UCA1RXBUF;//预期的"C、A 或 E"字符
如果(已接收='C'|已接收='A'|已接收='E'){
while (!(UCA1IFG&UCRXIFG));
接收= UCA1RXBUF;//预期的"M、O 或 N"字符
如果(已接收='M'|已接收='O'|已接收='N'){
while (!(UCA1IFG&UCRXIFG));
接收= UCA1RXBUF;//预期的"D"、K 或 D"字符
如果(已接收='D'|已接收='K'|已接收='D'){
重复= 0;
}
}
}
//读取最后一个字符响应
while (!((UCA1IFG&UCRXIFG)|((WaitCounter == 0xFFFFF)));
接收= UCA1RXBUF;
while (!((UCA1IFG&UCRXIFG)|((WaitCounter == 0xFFFFF)));
接收= UCA1RXBUF;
//将微控制器 UART 波特率更改为115K (默认为蓝牙)
if (WaitCounter == 0xFFFFF){
UCA1CTL1 |= UCSWRST;//**将状态机置于复位状态**
UCA1CTL1 |= UCSSEL_2;//波特率源 BRCLK = SMCLK
//配置115200波特率,带25MHz 系统时钟(SMLK)
// processors.wiki.ti.com/.../USCI_UART_Baud_Rate_Gen_Mode_Selection
UCA1BR0 = 217;// 115200
UCA1BR1 = 0;// 115200根据用户指南。
UCA1MCTL = UCBRS_0 + UCBRF_0;//调制 UCBRSx=0、UCBRFx=0
UCA1CTL1 &&~UCSWRST;//**初始化 USCI 状态机**
UCA1IE |= UCRXIE;//启用 USCI_A1 RX 中断
flagchangebaudrate = 1;
__delay_cycles (6000000);//延迟 UART 稳定
}
}
void Transmit232 (unsigned char CharToSend)
{
UCA1TXBUF = CharToSend;//加载具有 CharToSend 的缓冲区
while (!(UCA1IFG&UCTXIFG);//等待传输完成
}
非常感谢我们能够获得的任何帮助、
谢谢!
吉姆