基于OHCI的USB主机 —— 寄存器(初始化)
/**
* USB主机初始化
* @return 0 - 成功
*/
short ohciHardInit(void)
{
unsigned int reg;
//打开USB主机所使用的时钟
AT91F_UHP_CfgPMC();
AT91C_BASE_PMC->PMC_SCER |= (AT91C_PMC_UHP);
// Forcing UHP_Hc to reset
pUhp->UHP_HcControl = 0;
// Writing the UHP_HCCA
pUhp->UHP_HcHCCA = (unsigned int) &HCCA;
// Enabling list processing
pUhp->UHP_HcControl = 0;
// Set the frame interval
pUhp->UHP_HcFmInterval = AT91C_FMINTERVAL;
pUhp->UHP_HcPeriodicStart = AT91C_PRDSTRT;
// Initializing the UHP_HcDoneHead
pUhp->UHP_HcBulkDoneHead = 0x00;
HCCA.UHP_HccaDoneHead = 0x0000;
// Forcing UHP_Hc to Operational State
reg = pUhp->UHP_HcControl;
pUhp->UHP_HcControl = 0x80;
// Enabling port power
pUhp->UHP_HcRhPortStatus[0] = 0x00000100;
pUhp->UHP_HcRhPortStatus[1] = 0x00000100;
pUhp->UHP_HcRhDescriptorA = OHCI_HC_RHDESCRIPTORA_NPS;
pUhp->UHP_HcRhStatus = 0x00010000;
// UDP: Connect a pull-up
//调试时发现不设置此寄存器则返回的数据有问题
AT91F_PIO_SetOutput(AT91C_BASE_PIOD, AT91C_PIO_PD5);
//设置USB Host中断寄存器
pUhp->UHP_HcInterruptEnable = OHCI_HC_INTR_MIE |
OHCI_HC_INTR_RHSC |
OHCI_HC_INTR_UE |
OHCI_HC_INTR_WDH |
OHCI_HC_INTR_FNO;
pUhp->UHP_HcInterruptStatus = OHCI_HC_INTR_RHSC |
OHCI_HC_INTR_UE |
OHCI_HC_INTR_WDH |
OHCI_HC_INTR_FNO;
//设置AIC中断信息
AT91F_AIC_ConfigureIt( AT91C_BASE_AIC,
AT91C_ID_UHP,
AT91C_AIC_PRIOR_HIGHEST,
AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED, AT91F_ASM_UHP_Handler);
AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_UHP);
return 0;
}
|
基于OHCI的USB主机 —— 寄存器(初始化)相关推荐
- 基于OHCI的USB主机 —— 寄存器(其它)
USB端口关电 对USB端口进行关电处理的目的主要有两个,一是安全拔下U盘,防止带电插拔造成数据丢失或错误,另一个是为了再次开电,对U盘内部程序进行复位. /** * 断开USB端口的供电 */ ...
- 基于OHCI的USB主机 —— 结束语
从去年11月份开始连载的<基于OHCI的USB主机>系列总算告一段落了,到UFI命令层为止,所有USB主机的底层处理就结束了,再上面就是磁盘读写.文件系统.文件读写和应用系统了.这些上层应 ...
- 基于OHCI的USB主机 —— 前言
很久以前,大概是前年年底吧,因为公司项目的要求,我做了基于OHCI的USB主机访问U盘的程序,用来把系统中产生的一些数据保存到U盘中.本来做的时候就想把其中的一些经验体会发表的,可是工作实在是太忙,而 ...
- 基于OHCI的USB主机 —— OHCI(端点)
OHCI (Open Host Controller Interface),是康柏.微软.国家半导体等公司共同制定的一个USB主机接口规范,它提供一个更抽象的接口来完成USB数据传输工作. 在OHCI ...
- 基于OHCI的USB主机 —— UFI命令 USB Mass Storage Class Bulk-Only Transport协议介绍
USB Mass Storage Class Bulk-Only Transport Microsoft公司至Windows98后,USB主机 都支持Bulk-Only标准,所以现在的大容量存储类设备 ...
- 基于OHCI的USB主机 —— OHCI(设计思路)
在OHCI层,主要完成如下功能: l 通过控制端口读写数据(包含SETUP.DATA.STATUS等3个TD): l 通过控制端口发送设置命令(没有DATA的TD): l 通过批量端口读数据: ...
- 基于OHCI的USB主机 —— USB设备常量定义
USB设备枚举过程中使用到的常量定义如下: /*------------------------------------------------------------------------- * ...
- 基于OHCI的USB主机 —— UFI命令监视代码
在调用完上面的UFI命令后,ufiCmdRunning.state就被设置为UFI_STATE_BEGIN态,在主循环中调用本函数,用来判断UFI命令是否执行完毕,以及是否执行成功. /** * U ...
- 基于OHCI的USB主机——UFI查询命令(Inquiry)
查询命令(INQUIRY)请求获取UFI设备参数的信息.他被用作主机上的驱动器访问FUI设备的配置,特别是在接通电源和硬件复位之后使用.命令内容如下表: 位 字节 7 6 5 4 3 2 1 0 0 ...
最新文章
- hdu4861 找规律了
- C++普通引用和常引用
- MySQL前缀索引与覆盖索引:前缀索引对于索引精简 覆盖索引对于查询数据索引化
- LeetCode 121:买卖股票的最佳时机 思考分析
- docker 2376端口 CA 认证,并不能阻止服务器成为肉鸡
- Python编程高手之路——第一章:用户交互
- 使用OGR创建弧形图形
- B站韩顺平java学习笔记(二十)-- 网络编程 章节
- 项目管理软件浮出水面(转)
- 51CTO微职位一次通过PMP之经验浅谈
- c语言实现按键的抖动与消除,7.3 按键消抖
- 关于惠普打印机可以打印但是无法扫描的问题
- Windows 8如何关闭自动维护_-Chaz-_新浪博客
- c语言保龄球计分程序,保龄球规则-保龄球比赛计分方法是怎样的? 爱问知识人...
- uniapp地图轨迹回放
- 学习淘宝分享出来的链接web检测打开原生App
- 《从0开始做运营》(有感)
- Linux操作系统基础之文件传输
- 英语读书笔记-Book Lovers Day 11
- 项目中使用过的Soc
热门文章
- python语言入门w-Python 基础教程
- python毕业设计开题报告-基于Python的教学互动系统的设计与实现开题报告
- 使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
- octotree的安装
- C 语言Hello world
- 使用字符流 创建文件 写入文件 复制文件
- 使用chardet判断编码方式
- Android webservice的用法详细讲解
- block 实现原理详解(一)
- [00028]-[2015-09-23]-[00]-[VC 关于Excel操作的测试]