基本資料 功能說明 應用說明 注意事項 其他

基本資料

 

Question 1

HT46RB70的時鐘是否支持RC Oscillator?

Answer

HT46RB70的時鐘不支持RC Oscillator,其只支持Crystal Oscillator (6M or 12M)。


Question 2

HT46RB70有多少Endpoints?

Answer

HT46RB70有6個endpoints(包含endpoint 0),除endpoint 0外,endpoint 1~endpoint 5可通過SETIO暫存器(27H)軟體設定為input/output pipe,默認為input pipe。endpoint 0,1,2,4的FIFO size為8 bytes,endpoint 3,5的FIFO size為64 bytes。


Question 3

HT46RB50有多少EndPoints?

Answer

HT46RB50有四個EndPoint,其中endpoint0~endpoint2的FIFO size為8bytes,endpoint3的FIFO size最大可以設置到64bytes。

 


功能說明

 

Question 1

HT46RB50 USB復位後MCU是否會復位?

Answer

通過暫存器USC的第七位可以設置MCU是否會隨著USB的復位而復位。
當該位設置為1時,USB復位將復位MCU。當該位設置為0時,USB復位不會復位MCU。


Question 2

HT46RB50 USB中斷產生時,如何判斷哪一個端點被訪問?

Answer

當USB中斷產生時,暫存器USR中相關的端點請求標誌位EPXIF(X為端口號)會被置1,通過讀取USR可以得知哪一個端點被訪問。


Question 3

HT46RB50 USB如何進入休眠模式(SUSPEND MODE)以及該模式下消耗電流為何?

Answer

如果總線上3ms沒有信號,HT46RB50將進入休眠模式(SUSPEND MODE),在該模式下清除暫存器UCC的第三位(USBCKEN)禁止USB時鐘後,此時電流為400μA, 通過置位暫存器UCC的第四位(SUSP2)可將電流降至250μA。


Question 4

HT46RB50中如何選擇需要操作的FIFO?

Answer

通過設置暫存器UCC的低三位(EPS0~EPS2)可以選擇指定的FIFO進行操作,其對應關係為:
EPS0~EPS2設置為“000”時選擇端點0的FIFO; EPS0~EPS2設置為“001”時選擇端點1的FIFO;
EPS0~EPS2設置為“010”時選擇端點2的FIFO; EPS0~EPS2設置為“011”時選擇端點3的FIFO。


Question 5

如何寫入FIFO資料?

Answer

1、設定一組FIFO,設定為寫入mode (MISC TX bit = 1),設定REQ bit為 1。
2、檢查Ready bit直到狀態 = 1。
3、透過FIFO指標Register寫入,同時記錄已寫入資料數目。
4、重復步驟2, 3直到資料已寫完或Ready bit為0,標示FIFO不允許寫入資料。
5、Set MISC TX bit= 0。
6、將REQ bit清除為 0,完成寫入動作。


Question 6

如何讀取FIFO資料?

Answer

1、選擇一組FIFO,設定為讀取mode (MISC TX bit = 0),設定REQ bit為 1。
2、檢查Ready bit直到狀態 = 1。
3、透過FIFO指標Register讀取FIFO資料,同時記錄已讀取資料數目。
4、重復步驟2, 3, 直到Ready bit為0,標示FIFO資料已讀完。
5、Set MISC TX bit=1。
6、將REQ bit清除為 0,完成讀取動作。


Question 7

HT46RB50作為USB設備,為什麼UDP(D+)管腳要接一個1.5k上拉電阻到V33O管腳?

Answer

因為HT46RB50作為USB設備為全速模式,全速模式要求USB設備的資料線D+必須接一個1.5k上拉電阻到3.3V。因此HT46RB50的UDP(D+)管腳要接一個1.5k上拉電阻到V33O管腳。


Question 8

HT46RB50串列介面主發送模式的操作步驟?

Answer

Step1、 選擇CKS 和M1,M0=00,01,10
Step2、 選擇CSEN、MLS(同從模式)
Step3、 置位SBEN
Step4、 寫資料至SBDR 暫存器 → 資料記憶在TXRX 暫存器中 → 輸出CLK 信號→ 到第5 步 → (SIO 內部操作 → 資料記憶在TXRX 緩衝器中,SDI上資料信號移入TXRX 暫存器 → 資料傳輸完畢,TXRX 緩衝器資料載入到SBDR 暫存器)
Step5、 檢查WCOL;WCOL=1 → 清除WCOL 並且跳轉到第4 步;WCOL=0 →跳到第6 步
Step6、 檢查TRF 或等待SBI(串列介面中斷)
Step7、 從SBDR 暫存器讀取資料
Step8、 清除TRF
Step9、 跳轉到第4 步


Question 9

HT46RB50串列介面從模式的操作步驟 ?

Answer

1、 選擇M1,M0=11
2、 選擇CSEN、MLS(同主模式)
3、 置位SBEN
4、 寫資料至SBDR 暫存器 → 資料存儲在TXRX 暫存器中 → 等待主機時鐘( 和SCS):CLK → 跳轉到第5 步 → (SIO 內部操作 → CLK(SCS)接收 → 輸出資料存儲在TXRX 暫存器內,SDI 上資料移位元到TXRX 緩衝器內 → 數據發送完畢,TXRX 緩衝器資料載入到SBDR 暫存器)
5、 檢查WCOL;WCOL=1 → 清除WCOL 並且跳轉到第4 步;WCOL=0 → 跳到第6 步
6、 檢查TRF 或等待SBI(串列介面中斷)
7、 從SBDR 暫存器讀取資料
8、 清除TRF
9、 跳轉到第4 步


Question 10

如何發NAK包給USB HOST?

Answer

當進入USB中斷之後,不進行任何操作,直接退出中斷,此時,MCU會自動給USB HOST返回NAK包。


Question 11

USB主機掛起(SUSPEND)之後,如何通過HT46RB50喚醒主機?

Answer

HT46RB50要喚醒主機,在USB列舉的時候,在configuration descriptor中需要把remotewakeup功能打開。USB主機掛起(SUSPEND)後,當HT46RB50檢測到喚醒信號,可以通過RMWK(USC的第一位)發送信號來喚醒USB主機,USB主機收到該信號後,會發一個Resume信號給HT46RB50。


Question 12

MISC的第7位(LEN0)的有何意義?

Answer

該位元表示FIFO的讀取資料為LEN0握手信號,當主機送出Zero length Handshake資料給MCU時,MISC暫存器的LEN0位會設定為1,但此bit狀態不會自動清除,程式師必需自行清除此bit狀態為0。

 


應用說明

 

Question 1

在我們HOLTEK網上給出了HT46RB50與USB主機通訊的demo程式,運行此demo程式時,HT46RB50與USB主機通訊正常,但在demo程式基礎上開發新的專案,加入新功能後,HT46RB50與USB主機通訊就不能正常工作,為什麼?

Answer

在排除所加程式無bug之情況下,有一點要注意,那就是在標準demo 程式中,有用到利用PCL指針實現轉移之情況,那麼就要注意跨頁問題,也可能是這個問題造成通訊不能正常工作。

Example :
ORG 0EFCH
MOV A,M_RAM ;0EFCH
ADDM A,PCL ;0EFDH
JMP L_BRATCH0 ;0EFEH
JMP L_BRATCH1 ;0EFFH
JMP L_BRATCH2 ;0F00H
JMP L_BRATCH3 ;0F01H
JMP L_BRATCH4 ;0F02H
JMP L_BRATCH5 ;0F03H
……
當M_RAM=5 則PCL+5=0EFEH+5=03,PCL指針指向了0E03H,而並非執行JMP L_BRATCH5指令,故不能正常工作。


Question 2

HT46RB50模擬器在configuration options 中不能選擇系統頻率是嗎?

Answer

是的,HT46RB50系統頻率選擇是在模擬器中用跳線來選擇12MHz或6MHz.


Question 3

HT46RB50在使用晶振(crystal)和使用諧振器(resonator)時,振盪電路有什麼區別?

Answer

HT46RB50在使用晶振(crystal)時,OSC1和OSC2管腳對地可以不接22p電容;但用諧振器(resonator)時,OSC1和OSC2管腳對地必須各接一個22p電容。


Question 4

HT46RB70的SPI功能設置為Master模式時,如何控制CSn?

Answer

當SPI設置為Master模式時,如果在Mask Option中SIO CSEN選擇為Enable,當CSEN(暫存器SBCR.2)設置為1時,CSn為MCU自動控制,此時,當SBEN(暫存器SBCR.4)為1時, CSn輸出LOW,當SBEN設置為0時,CSn輸出HIGH。當CSEN設置為0或則在Mask Option中SIO CSEN選擇為Disable時,CSn由手動控制。

 


注意事項

 


Question 1

若 Holtek MCU 使用 HIRC,且使用與 OSC1共用的 I/O pin做過零檢測 (AC zero Crossing) 時,對 HIRC 的頻率是否有影響?若有影響,哪些 MCU會受到這種影響?如何處理這種影響?

Answer

當 Holtek MCU 使用 HIRC,並使用與OSC1共用的 I/O pin 做過零檢測時,會影響 HIRC 的頻率。
受到這種影響的 MCU 範圍:
所有OSC1 與 I/O pin共用的 MCU (包含增強型 OTP Type MCU和Flash Type MCU 等)
對這種影響的處理方法:
1.請儘量避開使用與OSC1 共用的 I/O pin 做過零檢測;
2.若無法避開,則需添加外圍電路,將輸入到 OSC1 pin 的電壓限制在 VDD 與 VSS 之間。