您好,
我尝试通过 BSLDemo (http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPBSL_Scripter/latest/exports/BSLScripter-3.4.0-windows-installer.zip ) 和 FTDI 线缆(C232HD UART 线缆)执行软件升级,但始终显示同步错误。 下面是我的设置。
我有一个64引脚的开发目标 http://www.ti.com/tool/msp-fet430u64
使用 MSPFET 调试器、我只需将一个简单的代码 LED 加载到电路板中。
int main (void) { WDTCTL = WDTPW + WDTHOLD;//如果 (CALBC1_8MHZ=0xFF)则停止 WDT //如果校准常量被擦除 { while (1);//不加载,则陷阱 CPU! } DCOCTL = 0;//选择最低 DCOx 和 MODx 设置 BCSCTL1 = CALBC1_8MHZ; DCOCTL = CALDCO_8MHZ;//加载8MHz 常数 P1DIR |= BIT0;//输出 P1OUT |= BIT0; while (1); }
在应用中加载后、断开 MSPFET 调试器。
我使用 FTDI 线缆(C232HD UART 线缆)连接 BOOST 引脚
下面是从升压到 FTDI 线缆的连接
1 (P1.1)至 TXD
3 (P2.2)至 RXD
5. 接地
2 (RST) 至 RTS#
4 (TCK) 至 DTR#
6. VCC
在 BDLDemo 源代码中、Im 遵循支持 F2系列的过时版本。
我注意到 RST 和 TEST 引脚切换是不同的。 因此、我更改为以下内容:
/*----------------- //
void SetRSTpin (BOOL 电平)
//控制 RST/NMI 引脚(0:GND;1:VCC)*/
{
//if (电平= true)
// comdcb.fDtrControl = DTR_CONTROL_ENABLE;
//else
// comdcb.fDtrControl = DTR_CONTROL_DISABLE;
//(comdtrControl = dtrB?) DTR_CONTROL_ENABLE:DTR_CONTROL_DISABLE;
comDCB.fRTsControl =电平? rts_control_disable:rts_control_enable;
SetCommState (hComPort、&comDCB);
}//* SetRSTpin */
void SetTESTpin (BOOL 电平)
//控件测试引脚(0:VCC;1:GND)*/
{
// if (level = true)
// comdrts.frts Control =/comtsrc
= disable;/comts.comtsrc = ts/disable.tranc =/ts.comcontrol/frts = ts.com_control/frtscontrol/frts.com_rtscontrol/frts =?/frtscontrol/com_rt rts_control_enable:rts_control_disable;
comdcb.fDtrControl = level? DTR_CONTRAL_DISABLE:DTR_CONTRAL_ENABLE;
SetCommState (hComPort,&comDCB);
}/* SetTESTpin */
/*------ //
void bslReset (BOOL invokeBSL)
//*在 RST/NMI 和 TEST/VPP 引脚上应用 BSL 输入序列
*参数:invokeBSL = true:完整序列
* InvokeBSL = false:仅访问 RST/NMI 引脚
*
*在引导加载程序硬件上反转两次
* TEST 反转(仅一次)
*在 DTR、RTS 上需要正电压用于硬件电源
*/
{
/*用于对引导加载程序硬件上的电容器充电:*/
SetRSTpin (1);
SetTESTpin (1);
delay (250);
if (开票 BSL)
{
SetRSTpin (0);/* RST 引脚:GND */
SetTESTpin (1);/* TEST 引脚:GND */ DELAY (10);//添加了延迟以满足同样的*/
SetTESTpin (0);/* TEST 引脚:VCC */ DELAY (10);/*关键布局和/或*
SetTESTpin (1);/* TEST 引脚:GND */ DELAY (10);/*尺寸问题 *
SetTESTpin (0);/* TEST 引脚:VCC */ DELAY (10);/*(由 MK 标记) *
SetRSTpin (1);/* RST 引脚:VCC */ DELAY (10);
SetTESTpin (1);/* TEST 引脚:GND */
printf ("BSL 重置\n");
}
否则
{
SetRSTpin (0);/* RST 引脚:GND */
延迟(10); /*延迟*/
SetRSTpin (1);// RST 引脚:VCC */
}
//*为 MSP430的振荡器提供稳定时间:*/
延迟(250);
//清除缓冲区:*/
PurgeComm (hComPort、Purge_TXCLEAR);
PurgeComm (hComPort、Purge_RXCLEAR);
}// bslReset *
我使用数字万用表来检查 RST 引脚和 TCK 引脚的电压
设置为时
SetRSTpin (1)、则为3.3V
SetRSTpin (0)、那么为0伏
SetTESTpin (1)、则为3.3V
SetTESTpin (0)、那么为0伏。
我是否缺少其他东西?
我还尝试发布 https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/246553?BSL-sYNCHRONIZATION-ERROR
将引脚从 MCU 更改为 UART
1 (P1.1)至 RXD
3 (P2.2)至 TXD
我还尝试发布 https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/160989
此帖子用于恢复 RST 上的级别并测试...
尽管如此、
设置为以下 并更改 leval=!level
1 (P1.1)至 RXD
3 (P2.2)至 TXD
5. 接地
2 (RST) 至 DTR#
4 (TCK) 至 RTS#
6. VCC
我认为我已经进入了 BSL 模式。
BSLReset (1)之后,LED 指示灯不亮。 这意味着它没有在应用程序中运行。
在 BSLReset (0)之后、LED 将仅亮起。 这意味着应用程序正常运行。
我仍然不幸运。
需要帮助...
谢谢