|
基本数据
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 之间。
|