顯示具有 WT61P9 標籤的文章。 顯示所有文章

WT61P9 Fan Control

Posted by: 邱小新 at 上午9:38 in
  • 板子上共有八個 Fan Control Pin(FAN1~FAN8),兩兩一組由 LPWM0~3 控制,PWM 值則存在 LPWM0_Duty(0x36)~LPWM3_Duty(0x39)。
  • PMCTL_DATA[PMCTL_DATA_PWM_EN_NO](0x26) 第三個 bit 要設成 1,才會啟動 PWM 控制。在 Init_PWM_Drv 時被強制打開,但是在 UARTprocess 則可以控制其開關。在 Check_PWM_Output 只是判斷而已,所以只能經由 I2C 控制打開轉速設定,但是關閉時無法將轉速關閉。
  • Routine_Read_En(0x1A) 第三個 bit 要設成 0,才能手動設定 PWM,不然會進入自動 Profile 設定。

NO.PINVariable板上的字
44GPIOD4/LPWM0LPWM0_DUTY(0x36)FAN1/FAN2
43GPIOD5/LPWM1LPWM1_DUTY(0x37)FAN3/FAN4
42GPIOD6/LPWM2LPWM2_DUTY(0x38)FAN5/FAN6
41GPIOD7/LPWM3LPWM3_DUTY(0x39)FAN7/FAN8

  • 讀取風扇轉速透過 CD4052 再經由 Frequency Count Detector 計算數值,所以必須設定 EN_F1_CNT=1(HV_FUN_EN) 及 EN_F2_CNT=1(HV2_FUN_EN)。
  • 讀取風扇轉速採用手動取樣方式,所以必須把中斷關閉,也就是要設定 IE1_FREQ1=0(INT_CTL_HV_EN) 及 IE1_FREQ2=0(INT_CTL_HV2_EN)。
  • FAN1,FAN3,FAN5,FAN7 接在 X 通道再經由 FREQ2B 計算,把值存在 FB2。HV2Sync_Detect_Routine 函數做計算動作
  • FAN2,FAN4,FAN6,FAN8 接在 Y 通道再經由 FREQ1B 計算,把值存在 FB1。HVSync_Detect_Routine 函數做計算動作。
  • Routine_Read_En(0x1A)=1 才會做風扇轉速計算。
  • 所讀得的轉速值則存在 FAN0_RPM(0x3A)~FAN7_RPM(0x41)。

indexdefaultR/Wbitname
300R/W5IE1_FREQ1
0R/W4IE1_FREQ2
400R/W7EN_F1_CNT
0R/W6EN_FB1_INT
0R/W4EN_FB1OV_INT
460R5-0FB1[5:0]
470R7-0FB1[13:6]
480R/W7-0FB1_LOV[7:0]
500R/W7EN_F2_CNT
0R/W6EN_FB2_INT
0R/W4EN_FB2OV_INT
560R5-0FB2[5:0]
570R7-0FB2[13:6]
580R/W7-0FB2_LOV[7:0]

WT61P9 的 Device_RW_Register_Routine

Posted by: 邱小新 at 上午11:05 in

Device_RW_Register_Routine 是同事設計用來做一些額外的工作。

  • (12)CMD_INDEX: command register,指令變數。
  • (13)CMD_REG: command parameter,給 shock command 用。
  • (14)CMD_DATA: command data,回傳或寫入資料。

CMD_INDEX

  • bit 7: new command,在 main loop 會判斷此值才進入 routine,該值會馬上被清空,以防止重覆執行。
  • bit 6: read。
  • bit 5: write。
  • bit 5&6: reset,重置所有 LED 警示燈號。
  • bit 4: slave done,指令做完會設成 1,當 busy flag 用。
  • bit 3: read profile parameter。
  • bit 2: write profile parameter。
  • bit 1: shock。
  • bit 0: TMP10x。

WT61P9 讀 code 心得

Posted by: 邱小新 at 上午9:21 in
  • Timer0 做為 poller 使用,每 10ms 中斷一次,再根據每個 flag 在 main loop 執行。
  • 所有的變數設定初始值是先把 address 放在 SubAddr_Table,data 放在 SubAddr_Default_Table,要注意二個位置要一致,以免出現問題。原來是要給 slave IIC 用的,讓其它週邊可以透過 slave IIC 來讀取資料。
  • 在 idata 開了一個 PMCTL_DATA 大陣列,index 定義在 os.h 的 enum 裏。不知為什麼要如此麻煩,想不懂。
  • 讀取風扇轉速透過 HV2Sync_Detect_Routine 及 HVSync_Detect_Routine,搞不懂其計算原理。會把值存在 FANx_RPM,但似乎都沒有用到。假如有一個轉速為 0,則會把 LED9_Fan Fail 點亮。
  • 在 main 的 while loop 內會呼叫 Check_PWM_Output,會去檢查 PWM 值是否被外部 MCU 透過 IIC 變更,然後再變更風扇的 PWM 值,藉此改變風扇轉速。
  • 溫度感應器有二組,一組透過 I2C,一組透過 ADC,I2C 讀取溫度透過 Thermal_routine,ADC 讀取溫度透過 Read_ADC_Routine,當溫度大於 Thermal_Thres1(0x2F,47C) 會把 LED7_High temperature 點亮。

Weltren MCU ISP Tool 設定

Posted by: 邱小新 at 上午11:27 in

我使用是 WT61P9,板子是公司的,不知道跟公板有沒有差別,反正什麼資料都沒有,只好把自己試的結果記錄下來。

  • 首先從 Config → Interface 進入,把下面選項設定好。
  • Control Port Selection → USB Port
  • SCL Pin 不用管
  • COM Port 不用管
  • Auto Reset → Enable
  • ISP Target Selection → WT61P9
  • 24M Crystal 不用管
  • S_ISP Board Selection 不用管

不管有沒有做好設定,都要按 Exit&Save 才能離開,右上角的 X 鈕根本沒用。按下 Exit&Save 後,會自動偵測 USB 是否有作用,如果 USB 沒接會出現 "NO USB Device Connect";如果有接上,則沒有任何訊息。雖然會偵測 USB 功能,但卻不會偵測 MCU type 有沒有選對喔。