你好
由于 BSL 的软件调用、我们希望从 PC 软件更新记录器(MSP430FR2476)的固件。
μ µC 通过 UART @115200 通过 eUSCIA_1 (P2.5和 P2.6)与我们的 PC 进行通信。
通信工作正常。
当用户准备好更新固件时、PC 软件会向 µC @ 115200发送订单。
然后、PC 软件将波特率更改为9600 + 1停止位+偶数奇偶校验。
在 μ µC 侧、执行以下指令:
_________________________________________
LED_RED (1);
LED_GREEN (1);
LED_BLUE (1);
RESET_WDTCTL;
//调用 du bootloader BSL
//从现在开始,PC 必须以9600、1个停止位、事件奇偶校验进行通信
// PC 将在~2s 中发送第一个 BSL 命令
//禁用 UCAx 和 UCBx
//将 UCAx 和 UCBx 置于复位状态并禁用中断
UCA1CTLW0 = UCSWRST;
UCA1IE = 0;
UCA0CTLW0 = UCSWRST;
UCA0IE = 0;
UCB1CTLW0 = UCSWRST;
UCB1IE = 0;
UCB0CTLW0 = UCSWRST;
UCB0IE = 0;
//停止计时器
TA0CTL &=~MC_2;
TB0CTL &=~MC_2;
LED_RED (0);
LED_GREEN (0);
LED_BLUE (0);
//BSL 软调用
_disable_interrupt ();
((void (*)() 0x1000)();//跳转到 BSL
_________________________________________
然后在 BSL 调用2秒后、PC 发送其第一个 BSL 命令(TX BSL 版本)@ 9600
0x80 0x01 0x00 0x19 0xE8 0x62
然而,µC 仍然保持沉默。 我们使用逻辑探头检查命令是否已正确传输@ 9600且是。
slau550z 数据表的表17指示 BSL 使用的外设 UART 是 eUSCI_A、但数据表未指定是 USCIA0还是 USCIA1。
我怀疑 BSL 只使用 USCIA_0....
您能否确认我们的问题来自使用 USCIA1而不是 USCIA0?
是否有办法?
此致、Dominique