|
基本数据
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要做哪些工作?
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)主机和设备就可以用新的地址进行通讯。
|