Skip to content

sfgithub1/SC8903_DC_DC_VCOM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SC8903自動升降壓控制器 (NUC2201LE3AE)

項目概述

這是一個基於Nuvoton NUC2201LE3AE微控制器的SC8903自動升降壓芯片控制器,具有以下主要功能:

  • PWM控制SC8903的輸出電壓和電流
  • 輸入/輸出電壓及電流檢測
  • LCD顯示界面 (主要視圖與設定選單視圖)
  • 按鈕控制界面
  • 設定參數保存與讀取 (Data Flash)
  • 支持 USB 虛擬串口 (VCOM) 遠程監控與控制

硬件要求

  • Nuvoton NUC2201LE3AE 微控制器 (使用3.3V電源)
  • SC8903 自動升降壓芯片
  • 系統時鐘:內部高速RC振盪器(HIRC 72MHz),配合 USB Crystal-Less 功能
  • 接口定義:
    • SC8903 控制
      • DISABLE 腳位 - PA6 (0=Enable, 1=Disable)
      • 電壓控制PWM - PA14 (PWM2, 20kHz)
      • 電流控制PWM - PA13 (PWM1, 20kHz)
    • ADC 狀態檢測
      • 輸入電壓檢測 - PA0 (ADC0,上分壓100KΩ,下分壓10KΩ)
      • 輸出電壓檢測 - PA1 (ADC1,上分壓100KΩ,下分壓10KΩ)
      • 輸出電流檢測 - PA2 (ADC2,採樣電阻可配置(預設10.0mΩ,範圍0.1~100.0mΩ),經INA199A1DCKR放大50倍)
    • 人機界面 (HMI)
      • 狀態指示燈 (LED) - PA5 (啟動輸出時亮)
      • 蜂鳴器 (Buzzer) - PA12 (PWM0, 2.73kHz)
      • 加按鈕 (Up) - PB8
      • 減按鈕 (Down) - PA11
      • 確定/中按鈕 (Middle) - PB15
      • 設置按鈕 (Set) - PA10
    • LCD SPI接口
      • SPI0_CLK - PC1
      • SPI0_MOSI - PC3
      • DC - PB2
      • RST - PB3
      • CS - PC0
      • BL (背光) - PA15 (PWM3)
    • 放電控制
      • 放電腳位 - PA4 控制N通道FET。輸出高於設定電壓 1V,或關閉輸出時,啟動自動放電。
    • 遠程控制
      • USB 接口 (D+/D-),用作 VCOM (Virtual COM Port)。不使用傳統 UART (PB0/PB1 已釋放為普通 GPIO)。
    • 溫度檢測 (NTC)
      • NTC 10kΩ B3950 接於 PC7 (ADC7)。
      • 接線方式:3.3V --- 2.20kΩ (固定) --- ADC7 腳位 --- NTC --- GND。

軟件功能

PWM控制

  • 通過 PWM 產生模擬電壓,經過 RC 低通濾波與運算放大器後,注入 SC8903 的 FB 及 ICTRL 腳位,從而精要調節輸出電壓與電流。
  • PWM頻率固定為 20kHz。
  • 額外 PWM0 用於蜂鳴器頻率為 2.73kHz。

電壓/電流/溫度檢測與安全保護

  • 實時獲取 ADC 值,並提供 4 階移動平均濾波 (Moving Average Filter)。
  • 輸入電壓保護:輸入電壓若異常(低於 4.5V 或高於 24V),將自動保護並關閉輸出。
  • 溫度監測:集成 NTC B3950 溫度檢測,實時顯示當前環境或元件溫度。

LCD顯示

  • Main View (主視圖):支持 3 種佈局切換 (在主視圖時短按 PA11 切換):
    1. Layout 0 (標準版):顯示 Vin, Vout, Vset, Iout, Iset, Time, Cap, Power。
    2. Layout 1 (大字體版):顯示大號 Vout/Iout,以及 Power, Capacity (Ah), Energy (Wh), Temperature (°C), Timer。
    3. Layout 2 (圖表版):顯示當前 V/I 數值及 160 點 電流歷史曲線圖 (1px/sec)。
  • Menu View (菜單視圖):包含 6 個設定項,支持滾動顯示 (每次顯示 4 項):
    1. V-Set: 電壓設定
    2. I-Set: 電流設定
    3. Calib: 電壓校準百分比 (-10.0% ~ 10.0%)
    4. Cap Lim: 容量限制設定 (到達限制會自動斷電保護)
    5. Reset T&C: 重置運行時間、容量與能量
    6. R-Sns: 採樣電阻設定 (0.1~100.0mΩ,預設10.0mΩ)
  • 智能刷新機制:結合 UpdateDisplay 旗標與 ClearScreenAndResetLastValues,僅在數值改變並達到顯示更新間隔 (60秒) 時局部或全局更新畫面,減少 SPI 頻寬佔用。

按鈕控制 (具備防抖處理)

  • PB15 (中按鈕/確定)
    • 長按 (>1000ms):在主視圖且輸出關閉時,開始輸出 (Enable SC8903)。
    • 短按:在菜單視圖時返回主視圖;或在輸出狀態時作為緊急暫停鍵 (關閉輸出)。
  • PA10 (設置按鈕)
    • 長按:在主視圖與菜單視圖之間互相切換。
    • 短按:在主視圖時短按切換到菜單視圖;在菜單視圖時短按則為向下滾動設定項。
  • PB8 (加按鈕)
    • 長按:在菜單中粗調設定值 (電壓±1V, 電流±100mA, 容量限制±1Ah, 採樣電阻±1mΩ)。若游標在 Reset 項目時執行數據重置。
    • 短按:在菜單中微調設定值 (電壓±0.1V, 電流±10mA, 容量限制±0.1Ah, 採樣電阻±0.1mΩ)。若游標在 Reset 項目時執行重置。
  • PA11 (減按鈕)
    • 長按:在菜單中粗調設定值 (同上)。
    • 短按:在主視圖時切換 LCD 佈局佈局 (Layout 0/1/2);在菜單視圖時微調設定值。

參數保存

  • 使用 FMC (Flash Memory Controller) 將設定保存至 Data Flash (自定義地址 0xF000)。
  • 系統會自動檢測設定值是否被修改,當參數修改完成且穩定停留超過 2 秒後,會自動將參數寫入 Flash,斷電不遺失。

USB VCOM 遠程控制

當專案中定義了 IS_VCOM_CTRL 1,MCU 會列舉成標準的 USB CDC 虛擬串口,隨插即用,取代傳統的 UART 通訊。通信參數隨意配置即可 (推薦 115200 bps)。

狀態報告

設備每 200ms 自動往上位機回報一次系統狀態,格式如右: Vin:12000,Vout:5000,Vset:5000,Iout:100,Iset:1000,Time:10,Cap:5,Power:0.50,Calib:0,CapLim:5.0,Out:1,Rsns:100,Temp:35.5,TLim:85

欄位 說明 單位
Vin / Vout / Vset 入/出/設 電壓 mV
Iout / Iset 出/設 電流 mA
Time 運行時間
Cap / CapLim 容量/容量限制 mAh / Ah
Power 輸出功率 W
Calib 電壓校準 0.1%
Out 輸出開關狀態 0(關閉) / 1(開啟)
Rsns 採樣電阻值 (×0.1mΩ 整數,即實際值需÷10) ×0.1mΩ
Temp / TLim 當前溫度 / 溫度上限 °C

控制指令

由 PC 下發指令時,必須以換行符號 \n 或是 \r 做為結尾。

指令格式 說明 範例
Vxxx 設定輸出電壓 (mV) V12000 (設為 12V)
Ixxx 設定輸出電流 (mA) I2000 (設為 2A)
P0 / P1 關閉/開啟輸出 P1 (開啟輸出)
Cxxx 設定校準值 (%) C-30 (校準為 -3.0%)
Lxxx 設定容量限制 (Ah) L5.5 (限制為 5.5Ah)
Sxxx 設定採樣電阻 (×0.1mΩ整數,1~1000) S100 (設為 10.0mΩ),S1 (設為 0.1mΩ)
Txxx 設定溫度上限 (°C) T85 (設為 85°C)
Bxxx 設定蜂鳴器音量 (Duty) B5000 (音量 5000/65535)
R 重置時間與容量 R (清零)

開發注意事項 (Development Notes)

  1. GPIO 中斷分配

    • PB.15 (中按鈕):獨立綁定至 EINT1_IRQn,必須在 EINT1_IRQHandler 中處理。
    • PA.10, PA.11, PB.8:統一由 GPAB_IRQn 管轄,在 GPAB_IRQHandler 中通過 GPIO_GET_INT_FLAG 區分。
    • 所有按鍵均啟用了 LIRC (10kHz) 時鐘驅動的硬體防抖 (Debounce)。
  2. USB Crystal-less 修整機制 (Trim) 本專案使用了 MCU 內建 48MHz HIRC,並依賴 USB 的 SOF (Start of Frame) 封包進行頻率的硬體自我修整以達到不需要外部晶振(Crystal)就可以實現高精度 USB 通訊目的 (IS_VCOM_CTRLCRYSTAL_LESS 同時為真)。在主循環中不可移除 SYS->HIRCTCTL 的修正維護邏輯,否則可能造成 USB VCOM 連線的脫機與不穩定。

  3. Data Flash 架構與解鎖 在運用 FMC 寫入韌體內部時,除了須知悉位址起始點 DATA_FLASH_BASE (0xF000) 之外,存取前必須呼叫 SYS_UnlockReg(); 解開暫存器防寫鎖定;對 Data Flash 的更新必須是以整頁擦除 (FMC_Erase) 為單位再分字寫入 (FMC_Write) 操作。

  4. UART 資源釋放 為避免腳位浪費並提升專案簡潔度,main.c 已廢棄硬體 UART0 外部通訊,全面遷移至 USB VCOM,從而釋放了 PB.0PB.1 腳位。UART0 模組僅保留內部用於 cdc_serial.c 的 LineCoding 邏輯。

  5. 定時器分配

    • Timer0: 1ms 系統滴答 (System Tick),用於按鍵計時與 1秒任務。
    • Timer1: 1ms 顯示刷新與 ADC 掃描觸發。
    • Timer2: 單次觸發模式,用於 delay_1ms 函數。

About

SC8903 DC-DC VCOM control project - Nuvoton NUC2201 MCU

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors