| 用HT82J97E实现带震动的USB Joystick的设计 |
| 类别:电子综合 |
|                         吴烁 本文主要介绍了HT82J97E针对USB Joystick而设计的硬件功能。 USB低速设备发展到现在已经相当成熟。带震动的Joystick在市场上將會越來越普遍,为了让开发者更能简化程序和提高开发效率,盛群半导体设计出了HT82J97E,用以开发USB DEVICE-p.htm" target="_blank" title="DEVICE货源和PDF资料">DEVICE。 功能及特点 图1.方框图 HT82J97E为八位高性能精简指令集单片机。专为USB产品而设计的。集成了USB SIE,支持USB和PS2端口复用。适用于Joystick和Mouse设备。主要功能和特点如下: 1. 工作电压:Fsys=6M/12MHz : 4.4V~5.5V; 2. 支持USB低速标准,有USB中断,可以从每个endpoint读取8*8位资料; 3. 最多可有20个双向输入/输出口,都可以通过选择是否带有上拉电阻,这样可以节省成本; 4. 2K*14位程序存储ROM、96*8位数据存储RAM和4层硬件堆栈; 5. PWM输出PWM1,PWM2(频率范围是23Hz~23KHz); 6. 16位可编程定时/计数器,具有溢出中断; 7. 6通道8位A/D转换器; 8. HALT功能和唤醒功能能减小功耗; 9. 低电压复位功能和Watch Dog定时器; 10. 3.3V标准输出,可以连接到USB D-,PC就可以判断其为USB低速设备; USB和PS2端口共享 通过寄存器实现USB和PS2端口的切换 SELPS2=1BH.4 , SELUSB=1BH.5 SELPS2=1,SELUSB=0,工作在PS2状态; SELPS2=0,SELUSB=1,工作在USB状态; USB中断 USB中断是由USB以下列出事件触发,相关的中断请求位(USBF:INTC.4)被置位。 1. PC访问USB FIFO; 2. 接受来自PC的USB暂停信号; 3. 接受来自PC的USB恢复信号; 4. USB复位信号 为Joystick震动设计的PWM输出 PWM1DR(0CH)为PWM1占空比缓存器,PWM2(0DH)为PWM2占空比缓存器 PWMBR(18H)为PWM基础周期缓存器 PWM占空比计算: 基础周期=(4/Fsys)*(PWMBR+1)或(1/Fsys)*(PWMBR+1) (PWMBR=1~255) 4/Fsys或1/Fsys通过PORT_PC(16H)的PWM_S来定义。 PWM_S为1,1/Fsys;PWM_S为0,4/Fsys。 PWM周期=256*基础周期 PWM1占空比=(PWM1DR+1)/256*100% (PWM1DR=0~255) PWM2占空比=(PWM2DR+1)/256*100% (PWM1DR=0~255) 通过设定PORTC_PC(16H)的PWM1_EN位或PWM2_EN位来允许PWM功能。 PWM1_EN为1,允许PWM1输出;PWM1_EN为0,不允许PWM1输出; PWM2_EN为1,允许PWM2输出;PWM2_EN为0,不允许PWM2输出。 由以上方法,可以输出不同频率和Duty的PWM,输出控制给电机后得到的转动速度不同,这样使Joystick有不同的震动效果。 A/D转换 参考电压可以通过USR(0X1B) VRSEL位来进行选择。 VRSEL为0,VRH=PB7口电压,VRL=PB6口电压; VRSEL为1,VRH=VDD,VRL=0。 这样让A/D转换更加灵活,能更好的适用于开发者使用。 软件设计 USB协议很复杂,遵循“PC提出问题,device回答”,由于篇幅有限,不详细介绍,这里只对如何读取和写入FIFO资料进行阐述。 (一)如何读取FIFO资料 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,完成读取动作; 故程序员在读取FIFO资料,是透过FIFO指针Register一个byte一个byte读取,同时要自行记录一Package读取有几个byte。HT82J97E最多只允许同一Package读取资料长度为8个bytes。 (二)如何写入FIFO资料 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,完成写入动作。 故程序员在写入FIFO资料,是透过FIFO指针Register一个byte一个byte写入,同时要自行记录一Package写入有几个byte。HT82J97E最多只允许同一Package写入资料长度为8bytes。 应用电路 图2.应用电路 X1能用6MHz或12MHz。 带*元件用于EMC。 带**元件只用于震荡器。           |
- 海尔空调制冷故障维..
- 2008-1-25
- 大尺寸TFT显示器..
- 2008-1-27
- 利用DC/DC转换..
- 2008-1-27
- 电动车铅酸蓄电池的..
- 2008-1-27
- 大型搅拌站自动配料..
- 2008-1-27
- 城市和工业污水处理..
- 2008-1-27
- 开关电源的数字控制..
- 2008-1-27
- 精密的智能电池使充..
- 2008-1-27
- 基于DSP控制的2..
- 2008-1-27
- 增强型运营商级多服..
- 2008-1-27
- 高效CCD数码相机..
- 2008-1-27
- Atheros 单..
- 2008-1-27
- Philips 推..
- 2008-1-27
- Fujitsu 数..
- 2008-1-27
- 如何给PCI卡选用..
- 2008-1-27
- A/D转换芯片的测..
- 2008-1-27
- 基于CTl技术的交..
- 2008-1-27
- MMIC和RFIC..
- 2008-1-27
- 利用皮弹服务器进行..
- 2008-1-27
- 白色发光二极管及其..
- 2008-1-27



