|
基本資料
Question 1
如何使HT82A851R USB之SIE重置時,而MCU不重置?
Answer
將HT82A851R USC(20H)暫存器之bit7清除為0,則HT82A851R USB之SIE重置時,MCU就不會重置。
反之,若HT82A851R之USC(20H)暫存器之bit7被置為1,則HT82A851R USB之SIE重置時,MCU也會重置。
Question 2
HT82A851R的USB介面共有幾個端點? 各端點都支持哪些傳輸方式及FIFO大小情況如何?
Answer
HT82A851R的USB介面共有5個端點(EP0~EP4)。
各端點的傳輸方式及FIFO大小如下:
端點0(EP0)支持控制傳輸方式,其FIFO大小為8 bytes。
端點1(EP1)支持中斷傳輸方式,其FIFO大小為8 bytes。
端點2(EP2)支持同步輸出傳輸方式,其FIFO大小為384 bytes。
端點3(EP3)支持同步輸入傳輸方式,其FIFO大小為32 bytes。
端點4(EP4)支持中斷傳輸方式,其FIFO大小為32 bytes
Question 3
HT82A851R的MCU如何知道主機(Host)向自己發送了一個0-sized 資料包 ?
Answer
若主機(Host)向HT82A851R的MCU發送了一個0-sized 資料包,
則SIE會將暫存器MISC(20H)之bit7置為1,當MCU看到暫存器MISC(20H)之bit7為1時,就知道主機向自己發送了一個0-sized 資料包。
Question 4
HT82A851R做為USB設備,如何使端點1成為主機的輸入端點 ?
Answer
端點1要成為主機的輸入端點,要做如下工作:
1). 在枚舉過程中,需將端點描述符中的bEndpointAddress之值設為1000 0001B。
bEndpointAddress之bit3~bit0為端點序號,0001表明現在是向主機報告端點1情況;bEndpointAddress之bit6~bit4保留未用;
bEndpointAddress之bit7為方向控制位,此位為1,表明端點1為輸入端點。
2). 需將HT82A851R之暫存器SETIO(27H).bit1 置為1,即端點1設為輸入狀態。
只有經過以上兩步操作,端點1才能成為主機的輸入端點。
功能說明
Question 1
HT82A822R 的RAM 有512x8bit 是唯讀RAM,用來做什麼用的?
Answer
該RAM用來存放頻譜或左右聲道音量大小的值(由暫存器USF的bit2位---ModeSelect決定,ModeSelect=0 RAM內容為頻譜值,ModeSelect=1左右聲道音量值)該值是從USB的介面FIFO裝入的。
Question 2
如何設置HT82A832R的PFD輸出頻率?
Answer
PFD Output Frequency = Prescaler Output / (2 * (N+1))
其中
1、Prescaler Output = PFD Frequency / Prescaler;
2、PFD Frequency為 (Fsys/4) / 16;
3、Prescaler由PRES1、PRES0(暫存器PFDC的第六位元和第五位元)可以設置為1(PRES1 = 0,PRES0 = 0),2(PRES1 = 0,PRES0 = 1),4(PRES1 = 1,PRES0 = 0),8(PRES1 = 1,PRES0 = 1);
4、N的值為暫存器PFDD的值。
Question 3
如何防止從揚聲器(speaker)中輸出爆破音(popping noise)?
Answer
為了防止揚聲器(speaker)發出爆破音(popping noise),在MCU上電初始過程中,功率放大器(power amplifier)應該輸出VDD/2(DAC寫入8000H)。
具體步驟為:
Step 1、設置WDTS的高四位元為0101b,進入DAC寫資料模式(DAC Write Data mode)。
Step 2、設置[2DH](DAC的低八位元)為00H,[2EH](DAC的高八位元)為80H。
Step 3、將[2FH].3置1後再清0,使DAC_WR_TRIG([2FH].3)產生一個下降緣。
Step 4、設置WDTS的高四位元為非0101b,退出DAC寫資料模式(DAC Write Data mode)。
Question 4
HT82A851R 做為USB設備,哪些USB事件可使SIE向MCU發出中斷請求?如何識別是哪種USB事件產生了中斷?
Answer
HT82A851R 做為USB設備,有以下USB事件可使SIE向MCU發出中斷請求。
1.USB休眠(SUSPEND)。
2.USB復位(RESET)。
3.USB恢復(RESUME)。
4.USB各個端點被訪問(ACCESS)。
以上USB事件產生中斷時,可通過以下方法來識別:
1.當USB進入休眠狀態時,USC(20H) 暫存器之bit0(SUSP位元)會被SIE設置為1,並產生USB中斷,在USB中斷服務程式中只要看到此位元為1,就知道是USB休眠事件產生了中斷。
2.當USB發生復位時,USC(20H) 暫存器之bit2(URST位元)會被SIE設置為1,並產生USB中斷,在USB中斷服務程式中只要看到此位元為1,就知道是USB因復位而產生了中斷。
3.當USB離開休眠而被恢復(RESUME)時,USC(20H) 暫存器之bit3(RESUME位元)會被SIE設置為1,並產生USB中斷,在USB中斷服務程式中只要看到此位元為1,
就知道是USB因RESUME而產生了中斷。
4.當HT82A851R 的端點0~端點4,任何一個端點被訪問時,均可產生USB中斷,其相應的中斷旗標元EP0F~EP4F(USR (21H)暫存器之bit0~bit4))會被SIE設置為1,
在USB中斷服務程式中查看相應的旗標,就知道是那個端點發生了中斷。
Question 5
HT82A851R做為USB設備,如何實現遠程喚醒主機功能?
Answer
HT82A851R做為USB設備要想實現遠程喚醒主機功能,應做如下工作:
1.在設備列舉時,需將配置描述符的bmAttributes之D5(即bit5)設置為1,告訴主機HT82A851R做為USB設備支援遠程喚醒主機功能。
2.HT82A851R之MCU需將AWR (23H) 暫存器之bit0(WKEN位元)設置為1,允許設備遠程喚醒主機。
3.當HT82A851R要真正遠程喚醒主機時,HT82A851R之MCU需通過USC(20H)暫存器之bit1(RMWK位元)發一個wake-up pulse,即可遠程喚醒主機。操作指令如下:
SET USC.RMWK
NOP
NOP
NOP
NOP
NOP
CLR USC. RMWK 。
4.當USB主機接收到HT82A851R發送的遠程喚醒信號後,它會發出一個恢復位元信號給設備,這樣就可重新與設備進行通訊。其時序圖如下:(在附件中)

Question 6
HT82A851R做為USB設備,當MCU收到主機發來的SET_CONFIGURATION命令時,MCU要做哪些工作?
Answer
HT82A851R之MCU收到主機發來的SET_CONFIGURATION命令時,MCU會將SET_CONFIGURATION命令中的配置值取出,並與配置描述符中的配置值(bConfigurationValue)相比較:
若此二者相同,那麼說明主機配置設備成功,則HT82A851R之MCU需回一個0-sized數據包給主機,做為收到SET_CONFIGURATION命令的應答信號。
若此二者不同,那麼說明主機配置設備失敗,則HT82A851R之MCU需發一個STALL命令給主機。
當主機配置設備成功後,則設備與主機的列舉過程結束,二者即可進行正常通訊。
Question 7
HT82A851R做為USB設備,MCU如何發0-sized 數據包給主機?
Answer
MCU發0-sized 數據包給主機,實際上是發一個握手信號給主機。其發送方法如下:
1). 將暫存器MISC(26H).bit1(TX) 設為1,即FIFO設為寫模式。
2). 延時4us。
3). 將暫存器MISC(26H).bit0(REQUEST) 設為1,即發送FIFO請求。
4). 延時28us。
5). 判斷暫存器MISC(26H).bit6(READY)是否為1,若不為1,則轉1).
若為1,則轉6).
6). 將暫存器MISC(26H).bit1(TX) 清為0,即FIFO設為讀模式。
7). 延時4us。
8). 將暫存器MISC(26H).bit0(REQUEST) 清為0,即結束FIFO請求。
在完成以上操作後,MCU就向主機發送了一個0-sized數據包。
應用說明
注意事項
其他
Question 1
HT82A851R做為USB設備,當其MCU收到主機發來的SET_ADDRESS 命令時,MCU要做哪些工作?
Answer
HT82A851R做為USB設備,當其MCU收到主機發來的SET_ADDRESS 命令時,MCU要做如下工作:
1). HT82A851R之MCU需將暫存器SIES(25H)之bit0(ASET)置為1。此位元為1表明:在本次傳輸(transfer)結束後,HT82A851R之SIE才用AWR(23H)中的位址來更新設備位址。
2). HT82A851R之MCU需將收到的新的設備位址寫入到AWR(23H)暫存器之bit1~bit7。
3). HT82A851R之MCU需回一個0-sized數據封包給主機,做為收到SET_ADDRESS 命令的應答信號。
當HT82A851R之MCU完成以上工作後,在下一個傳輸中(transfer)主機和設備就可以用新的位址進行通訊。
|