Re: 關於ATSAMD21-USB suspend current認證問題
|
||||
---|---|---|---|---|
資深會員
|
您可以參考一下Microchip Harmony 3 - HID Basic Remote Wakeup Example
https://microchip-mplab-harmony.github ... e-hid_basic_remote_wakeup
發表於: 5/24 22:35
|
|||
不要盲目地從一堆“嘗試”中去找答案;將時間用來找尋“最正確”的方法。
|
||||
|
Re: 關於ATSAMD21-USB suspend current認證問題
|
||||
---|---|---|---|---|
管理員
|
Hi 您好
首先, 若已經嘗試將 Sleep mode 調整到STANDBY,卻無法正確偵測,可能是因為喚醒條件沒有設定正確,或者是因為時鐘設定阻止了進入更深層次的睡眠模式。請檢查MCU的喚醒源設定,並確保USB的中斷都能在STANDBY模式下喚醒MCU。 ________________________________________________________________________________________ 1. USB-IF認證部分通常是指USB接口(IP)的認證,而不是整個IC。 2. 關於USB Peripheral Power Consumption的數據,這些數據通常是指USB模組或IP本身的功耗,而不是整個IC的功耗。您可以嘗依照Section 37.8.2 中所註明的指定的條件下進行量測。
發表於: 5/24 11:19
|
|||
|
Re: 關於ATSAMD21-USB suspend current認證問題
|
||||
---|---|---|---|---|
新會員
|
謝謝管理員CCC_Ruby的回覆~
目前以降頻方式調整,經認證單位確認後,suspend current約落在2.51mA~2.55mA(這範圍還是沒過認證). 詳細調整的資料如下: 使用Example project[USB Device HID Generic Example - SAM D21 Xplained Pro - atsamd21J18A] 1.conf_board.h 將[CONF_BOARD_USB_VBUS_DETECT] remark,不使用. 2.conf_clocks.h 修改設定如下(降頻) # define CONF_CLOCK_CPU_DIVIDER SYSTEM_MAIN_CLOCK_DIV_8//SYSTEM_MAIN_CLOCK_DIV_1 # define CONF_CLOCK_APBA_DIVIDER SYSTEM_MAIN_CLOCK_DIV_128//SYSTEM_MAIN_CLOCK_DIV_1 # define CONF_CLOCK_APBB_DIVIDER SYSTEM_MAIN_CLOCK_DIV_32//SYSTEM_MAIN_CLOCK_DIV_1 # define CONF_CLOCK_APBC_DIVIDER SYSTEM_MAIN_CLOCK_DIV_128//SYSTEM_MAIN_CLOCK_DIV_1 /* SYSTEM_CLOCK_SOURCE_OSC32K configuration - Internal 32KHz oscillator */ # define CONF_CLOCK_OSC32K_ENABLE true//false # define CONF_CLOCK_OSC32K_STARTUP_TIME SYSTEM_OSC32K_STARTUP_130 # define CONF_CLOCK_OSC32K_ENABLE_1KHZ_OUTPUT false//true # define CONF_CLOCK_OSC32K_ENABLE_32KHZ_OUTPUT false//true # define CONF_CLOCK_OSC32K_ON_DEMAND false//true # define CONF_CLOCK_OSC32K_RUN_IN_STANDBY false /* Configure GCLK generator 2 (RTC) */ # define CONF_CLOCK_GCLK_2_ENABLE true//false # define CONF_CLOCK_GCLK_2_RUN_IN_STANDBY false # define CONF_CLOCK_GCLK_2_CLOCK_SOURCE SYSTEM_CLOCK_SOURCE_OSC32K # define CONF_CLOCK_GCLK_2_PRESCALER 32 # define CONF_CLOCK_GCLK_2_OUTPUT_ENABLE false 3.conf_extint.h中 # define EXTINT_CLOCK_SOURCE GCLK_GENERATOR_2//GCLK_GENERATOR_0 4.clock.c中 disable下列設定: ///* OSC8M */ //struct system_clock_source_osc8m_config osc8m_conf; //system_clock_source_osc8m_get_config_defaults(&osc8m_conf); // //osc8m_conf.prescaler = CONF_CLOCK_OSC8M_PRESCALER; //osc8m_conf.on_demand = CONF_CLOCK_OSC8M_ON_DEMAND; //osc8m_conf.run_in_standby = CONF_CLOCK_OSC8M_RUN_IN_STANDBY; // //system_clock_source_osc8m_set_config(&osc8m_conf); //system_clock_source_enable(SYSTEM_CLOCK_SOURCE_OSC8M); //system_apb_clock_set_divider(SYSTEM_CLOCK_APB_APBC, CONF_CLOCK_APBC_DIVIDER); 另外,有嘗試調整下列Sleep Mode的切換 在sub_device_udd.c中, static void udd_sleep_mode(enum udd_usb_state_enum new_state) { enum sleepmgr_mode sleep_mode[] = { SLEEPMGR_ACTIVE, /* UDD_STATE_OFF (not used) */ #if (SAML21) || (SAML22) SLEEPMGR_IDLE, /* UDD_STATE_SUSPEND */ SLEEPMGR_IDLE, /* UDD_STATE_SUSPEND_LPM */ SLEEPMGR_IDLE, /* UDD_STATE_IDLE */ #else SLEEPMGR_IDLE_2, /*SLEEPMGR_IDLE_2,SLEEPMGR_STANDBY*/ /* UDD_STATE_SUSPEND */ <==有嘗試調整到STANDBY,但無法偵測 SLEEPMGR_IDLE_1, /*SLEEPMGR_IDLE_1,*/ /* UDD_STATE_SUSPEND_LPM */ SLEEPMGR_IDLE_0, /* UDD_STATE_IDLE */ #endif ***請問還有哪部分可以調整的嗎?? -------------------------------------------------------------------------------------------------- 另外,在[SAM-D21-DA1-Family-Data-Sheet-DS40001882H.pdf]中,有提到 1.Section 37.15(page 906)提到有過USB-IF認證部分,是指USB IP還是整顆IC去認證?? 2.Section 37.8.2 USB Peripheral Power Consumption (page 873)中, 有提到[Table 37-13. Typical USB Device Full Speed mode Current Consumption], (1)suspend current在GCLK_USB OFF的情況下是201uA (2)suspend current在GCLK_USB ON的情況下是0.83mA 這兩個條件是只測試USB IP嗎?還是整個IC?? 能否提供期對應的firmware code或對應ATSAMD21G18A的燒錄檔?? 以上[??]的詢問是否能夠懇請幫忙~認證規格差一些,很苦惱~感謝~
發表於: 5/21 18:53
|
|||
|
Re: 關於ATSAMD21-USB suspend current認證問題
|
||||
---|---|---|---|---|
管理員
|
Hi,
您可以參考Application Note, AT06475: SAM D21 USB. 以及 AT09334: USB Device Interface (UDI) for Human Interface Device Generic (HID Generic). 進入sleep mode並不意味著完全切斷與PC的通訊,而是要在保持低功耗的同時,仍然能夠響應外部事件。ATSAMD21G18A提供了不同級別的Sleep mode,每個模式對於喚醒源和功耗有不同的限制。您需要選擇一個能夠讓USB在需要時喚醒MCU的sleep mode。 https://ww1.microchip.com/downloads/en ... lication-Note_AT06475.pdf https://ww1.microchip.com/downloads/ae ... plicationNote_AT09334.pdf
發表於: 5/16 16:50
|
|||
|
Re: 關於ATSAMD21-USB suspend current認證問題
|
||||
---|---|---|---|---|
新會員
|
參照:
----------------------------------------------------------------------------------- 您好~感謝您撥空回覆~ 1.- 確認MCU是否進入sleep mode (包括 Idle 和 Standby mode)。[回覆如下] 目前嘗試在[USB Device HID Generic Example - SAM D21 Xplained Pro - ATSAMD21J18A]中, ui.c中, void ui_powerdown(void) { //LED_Off(LED_0_PIN); sleepmgr_enter_sleep();//加入此function } 量測電流後,是小於2.5mA(約0.3mA),但PC無法識別亦無法進入正常HID模式. 2.- 在Suspend mode 下關閉不必要的 周邊設備 或 clock(外部、內部或周邊設備的 clock)。[回覆如下] 目前電路並無其他週邊只有MCU與32K振盪器與reset電路; 以Example Code的內容,clock的部分[並未修改範例的設定],使用 (1)CONF_CLOCK_GCLK_0 ; (2)CONF_CLOCK_OSC32K_ENABLE_32KHZ_OUTPUT =true 請問有建議修正的地方嗎? 3.透過Power Manager 設定來確保在 suspend mode 下,MCU 的電源管理能夠降低電流消耗至最低。[回覆如下] 這是透過開發工具設定?還是哪一個部分? 請問您有相關文件或reference code可供參考嗎? 目前是參考[Appnotes/Atmel-42336-ASF-USB-Stack-Manual_ApplicationNote_AT09331.pdf], page 17的workflow進行設定. 煩請指教~感謝~
發表於: 5/15 18:51
|
|||
|
Re: 關於ATSAMD21-USB suspend current認證問題
|
||||
---|---|---|---|---|
新會員
|
感謝回覆,目前的韌體,是使用開發工具中的Example,
[USB Device HID Generic Example - SAM D21 Xplained Pro - ATSAMD21J18A]進行測試 認知上應有進入省電模式,但實際測試看起來為達到,請知悉~
發表於: 5/15 18:18
|
|||
|
Re: 關於ATSAMD21-USB suspend current認證問題
|
||||
---|---|---|---|---|
管理員
|
Hi,
您可以嘗試以下幾件事情來能不能降低 USB suspend mode的電流消耗。 - 確認MCU是否進入sleep mode (包括 Idle 和 Standby mode)。 - 在Suspend mode 下關閉不必要的 周邊設備 或 clock(外部、內部或周邊設備的 clock)。 - 透過Power Manager 設定來確保在 suspend mode 下,MCU 的電源管理能夠降低電流消耗至最低。
發表於: 5/15 17:53
|
|||
|
Re: 關於ATSAMD21-USB suspend current認證問題
|
||||
---|---|---|---|---|
資深會員
|
請問一下MCU也有進入省電模式嗎?
發表於: 5/15 16:40
|
|||
不要盲目地從一堆“嘗試”中去找答案;將時間用來找尋“最正確”的方法。
|
||||
|
關於ATSAMD21-USB suspend current認證問題
|
||||
---|---|---|---|---|
新會員
|
您好~目前使用型號ATSAMD21G18A的MCU,應用於USB HID與I2C橋接器,
但送USB-IF相關認證單位測試後,發現suspend current約為7mA(大於規範中的2.5mA) 因此,透過開發工具中提供的Example project [USB Device HID Generic Example - SAM D21 Xplained Pro - ATSAMD21J18A]進行測試, 經確認,無論是使用自行用ATSAMD21G18A製作的板子(板上只有MCU與32K振盪器與reset電路) 或[SAM D21 Xplained Pro]開發板,suspend current都在3.1x mA左右, 目前遇到瓶頸無法再調低電流,請問有什麼方式可以降低到符合規範的2.5mA?? 測試手法為: 1.在電腦端與開發板間,VBUS串接一電流表 2.讓電腦進入休眠 3.觀看電流表上數值 若有任何解法,懇請告知,謝謝各位~ PS.附圖為程式設定與應用手冊截圖~
發表於: 5/15 9:50
|
|||
|