打造国内最大的IC交易平台
技术资料 行业资讯 PDF资料 IC价格 IC替换 缩略语 IC供应 IC采购
用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。 带**元件只用于震荡器。