讓 SF32LB52 在自訂 PCB 上啟動

大家好,

我為 SF32LB525UC6 這顆晶片設計了一塊客製化電路板,目前第一步是嘗試透過除錯 UART 與它通訊。具體來說,我正在迴圈中發送 ENTER DEBUG 指令,並期待收到正確的確認回應。然而不論我怎麼嘗試,裝置始終拒絕通訊。因此目前我只能依靠物理現象來推測問題所在,以下是我目前的觀察:

  • 電源部分似乎運作正常。我可以在所有常電的電源腳位上量到正確的電壓:VBUS(來自外部電源的 5V)、VBAT(未接電池)、VCC(約 3.4V,由 VBAT 供電)、BUCK、VDD_VOUT1 與 VOUT2、VDD_RET 以及 VDD_RTC 都在規格範圍內。
  • 所有由軟體控制的 LDO 輸出端都量到 0V,甚至 VDD33_VOUT1 也是 0V。這非常奇怪,因為根據 SDK 倉儲中提供的啟動載入程式碼,啟用 3.3V 的 LDO1 應該是啟動載入程式一開始就會做的動作之一。因此我懷疑啟動載入程式在開機時根本沒有執行。

以下是我透過測試後相當確定的一些事實,以及我的設定細節:

  • 因為我想專注測試 SF32 晶片本身,所有非啟動與 UART 通訊所必需的元件都已移除。晶片未連接外部記憶體沒有外部時鐘(根據使用者手冊,我理解它在啟動時應使用內部震盪器作為主時鐘),也沒有任何外部周邊。電源腳位都有加上去耦電容,BUCK 轉換器所需的電感也已安裝。
  • UART 程式燒錄器是正常的,我已在開發板上測試過,可以成功發送 ENTER DEBUG 指令並收到正確回應。我使用 Raspberry Pi Pico 搭配自訂軟體來發送除錯指令,但使用一般 UART 收發器搭配 sftools 同樣也無法成功。
  • 我相當確定 PCB 本身沒有問題,因為我已經直接在晶片焊墊上進行過粗略的導通測試。晶片本身應該也沒有損壞,我已在多塊板子上多次更換過 SF32 晶片,行為都完全一樣。
  • 我的 SF32 晶片是從淘寶的官方 Sifli 店鋪購買的。
  • SF32 似乎會將 TX 腳位拉高至 VCC,但除此之外完全沒有動作。我已用示波器確認過,沒有任何訊號輸出的跡象。

以下是我對可能問題的一些推測:

  • 在這個設計中,我忽略了將 PA34 腳位接地,目前是浮接狀態。我不認為這會造成問題,最壞情況下晶片可能幾秒後重置,但這應該不影響除錯通訊。
  • UART 線路上的串聯電阻 R8 和 R9 在原型上使用的是 0Ω 電阻,因為手邊沒有 100Ω 的電阻,且我擔心較高的電阻值可能會衰減訊號。雖然是低機率,但這會不會反而造成問題?
  • 或許我確實遺漏了某個必要元件,例如外部時鐘其實是啟動過程中必需的?我懷疑不是這個問題,因為先前我曾製作過完整元件配置的原型板,同樣也無法運作。不過如果各位認為有必要,我可以嘗試重新加上一些元件。

總結來說,以我的判斷有三種可能:要麼我拿到的是不良品晶片,要麼我遺漏了啟動過程中的某個步驟而導致晶片無法回應,又或者我的電路板設計有錯誤。無論是哪一種,我現在幾乎已經沒有方向,希望這裡有人能提供更好的測試建議……以下是電路圖的截圖(未安裝的元件已標示刪除),若您有任何測試建議或需要更多資訊,我都樂意進一步測試並回覆。

非常感謝各位提前提供的幫助!

Copie d'écran_20251119_140538

Copie d'écran_20251119_140335

48M晶振是启动必须的,请勿移除,否则UART无法连接。

1 Like

感謝您的建議。我已經將 48MHz 晶體重新加回電路板上,但不幸的是,問題仍未解決。我量測了晶體的引腳,發現兩個腳位電壓都接近 GND 電平,因此我推測 SF32 根本沒有嘗試啟用它。這與 bootloader 根本沒有啟動的情況相符,同樣地,VDD3.3_VOUT1 始終保持低電平也支持這一推論。

我也嘗試了繞過電源級電路,直接以 3.8V 提供 VCC,但行為並未有任何改變。

我還發現了另一個錯誤:我使用的電感其直流電阻(DCR)遠高於硬體指南所建議的規格(1.6Ω 而非最大 0.4Ω),這或許足以導致 MCU 無法獲得足夠的供電。我將試著尋找一個更低電阻值的電感並測試是否有所改善。不過若您想到其他可能的問題,我也很樂意進行測試。

感謝您的協助,待我取得合適的電感後會再向您回報結果。

能否将这些具体电压列出以便分析问题,包括VCC,VSYS,VDD_RTC,VDD_RET,BUCK,VDD_VOUT1,VDD_VOUT2,AVDD_BRF。

1 Like

从原理图中看AVDD_BRF未连接有效输入。请参考网页检查其它连接。

1 Like

You are entirely correct, this is a mistake on my part. I have bridged this pin to VCC and the SF32 communicates just fine now. Thank you very much for your help, I should have read the specification better !