Part Number:MSP430F2418
你好,
我實際運用的需求是要在電路板上進入software BSL模式,我目前使用下面程式碼做開發驗證
int main(void)
{
uint16_t ite = 0;
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
initClockTo16MHz();
__bis_SR_register(GIE);
while (1)
{
__disable_interrupt(); // disable interrupts
for(ite = 0 ; ite < 1000 ; ite++);
((void ( * )())0x0C00)(); // jump to BSL
}
理論上開機後等一小段時間後就進入software BSL,這時使用外部uart送0x80的sync字元,都沒有回應,這時候我用hardware BSL invocation,再送一次0x80,就有正確的0x90回復了,也用過1 Mhz的clock設定,也是一樣的狀況,不知道為什麼進入不了software BSL模式。
Yale Li:
您好,热启动的话BSL地址应该是0x0C02
,
LiehChun Chang:
我測試過,用0x0C02進入結果software BSL invocation結果一樣。
,
LiehChun Chang:
我多做了一個測試,在進入software BSL前,把P2.0設定為high 輸出,結果用software BSL invocation,該腳位還是high,用hardware invocation就會變成low,這樣看起來並沒有進入software BSL。
也換過一顆MSP430F2418,還是沒用。
,
LiehChun Chang:
我在文件slau319ae的table 5-6看到下面文字
是說進入software BSL還要輸入上面asm嗎?
,
Yale Li:
看起来是这样,您可以先试一下。
并且注意下面的注释(1):
在进入 BSL 之前,用户应用必须清除 LOCK 和 LOCKA 位:
mov.w #FWKEY+LOCKA,&FCTL3
之后有什么结果还请您和我反馈一下。
,
LiehChun Chang:
我後來還加了下面的asm code
然後就可以了,我發現直接原因是SR沒有設成0x00,不清楚為何這樣,不過後來又有別的現象,感覺這顆IC和手冊上描述的不太一樣,之後整理好再用別的討論串討論心的問題吧。
,
Yale Li:
好的,非常感谢您的反馈