联系我们
我要留言
网站首页
毕业设计资料
开题报告
格式模板
任务书
外文翻译
文献综述
毕业设计指导
答辩PPT文稿
小程序毕业设计
Java毕业设计
PHP毕业设计
Python毕设
android毕设
ASP毕业设计
NET毕业设计
理工毕业论文
计算机
电子
机械设计
工程设计
留言本
当前位置:
首页
>
理工毕业论文
>
计算机
站内搜索(标题)
站内搜索(正文)
站内搜索(来源)
站内搜索(作者)
淘宝网搜索
当当网搜索
卓越网搜索
狗狗搜索
百度搜索
Google搜索
计算机
基于单片机和USB接口技术的高速数据采集系统的设计7
时间:2020/10/27 9:25:53 作者: 来源: 查看:
0
评论:
0
内容摘要:
{struct_flags{ unsigned char timer:1; unsigned char bus-reset:1; unsigned ch...
{
struct_flags
{
unsigned char timer:1;
unsigned char bus-reset:1;
unsigned char suspend:1;
unsigned char setup_packet:1;
unsigned char remote_wakeup:1;
unsigned char in_isr:1;
unsigned char control_state:2;
unsigned char configuration:1;
unsigned char verbose:1;
unsigned char epl_rxdone:1;
unsigned char setup_dma:1;
unsigned char dma_state:2;
}bits;
unsigned short value
}EPPFLAGS;
//
计算机毕业设计
USB设备请求寄存器
typedef struct_ device_request
{
unsigned char bmRequesetType;
unsigned char bRequest;
unsigned short wValue;
unsigned short windex;
unsigned short wLength;
}DEVICE_ REQUEST;
//Setup包数据缓冲区
typedef struct_control_ xfer
{
DEVICE_ REQUSET DeviceRequest;
unsigned short wLength
unsigned short wCount;
unsigned char*pData;
unsigned char dataBuffer[MAX_ CONTROLDATA_ SIZE]:
}CONTROL_ XFER;
4.1.3 PDIUSBD12固件编程的实现
1 中断服务程序-ISR.C
这部分代码处理由PDIUSBD12产生的中断,它将数据从PD工USBD12的内部FIFO取回到CPU
存储器并建立正确的事件标志-通知主循环进行处理。在ISR的入口固件使用D12_ Read Interrupt Register( )来决定中断源,然后将进入相应的子程序进行处理。PDIUSBD12的固件完全由中断驱动ISR的流程图8如下所示:例如,在OUT数据阶段的建立包时,工SR将建立包和OUT数据都存入"CONTROL_ XFER”缓冲区中,然后将“setup_packer”标志就到主循环这将减少主循环不必要的服务时间,并且简化了主循环的编程。总线复位和挂起并不要求在ISR中进行特殊的处理。ISR只需在EPPFLAGS中设置“bus_ reset”或“suspends”标志位,然后退出即可。
ISR与前台主循环通过事件标志EPPFLAGS和数据缓冲区CONROL_ XFER进行通信。
主循环和ISR之间的任务分配是这样的:ISR从D12收集数据而主循环对数据进行处理。当工SR收集了足够的数据时,它只通知主循环己经准备好等待处理。
4.1.4 控制端点处理程序
控制传输总是在SETUP阶段开始,之后为可选的DATA阶。然后在STATUS阶段结束。如图10所示为控制端点不同状态的转变。固件使用这3种状态来正确地处理控制传输。
如图11所示为控制输出处理程序。为了说明它,举一个主机请求的例子叫做“Get Descriptor()”的标准设备请求。
当USB器件D12接收到建立包,将产生一个中断通知MCU,微控制器响应中断,通过读D12中断寄存器决定包是发到控制端点还是普通端点。如果包是送往控制端点,MCU要通过读D12的最后处理状态寄存器进一步确定数据是否是一个建立包,第一个包必须是建立包。
图9 中断服务程序流程
计算机毕业设计
图10 控制端的安处理程序转换
从下面的流程图10中可以看出,MCU需要通过选择控制输出端点提取建立包的内容来决定端点是为满还是空。如果控制端点为满,MCU将从缓冲区读出内容并将其存入存储区。之后,它将从存储区使主设备请求生效。如果是一个有效的请求,MCU必须向控制输出端点发送应答建立命令以重新使能下一个建立阶段接下来MCU需要证实控制传输是控制读还是写,这可以通过读建立包中bmRequestType的第8位来实现。如果控制传输是一个控制读类型,那就是说器件需要在下一个数据阶段向主机发回数据包。MCU需要设置一个标志以指示USB设备现在正处于传输模式,即准备在主机发送请求时发送数据。
建立阶段结束之后,主机会执行数据阶段。D12等待接收Control_ In包,过程如下面的流程图12“控制输入处理程序”所示。MCU首先需要通过读D12的最后处理状态寄存器清零Control_ In中断标志位,接着MCU再确认D12处于传输模式后进行数据包的发送。
Tags:
上一篇:
气体混合加压DCS系统4
下一篇:
基于LonWorks现场总线的楼宇自动化系统设计8
相关评论
理工毕业论文
计算机
电子
机械设计
工程设计
本类更新
10-27
论合肥IT市场初的现状及发展
10-27
MFC中消息映射机制分析
10-27
穷举破解EXCEL、WORD文档密码
10-27
Windos9x下的双机通信
10-27
一种基于“陷门收缩”原理的公钥算法
10-27
软件过程RUP初探
10-27
基于Domino/Notes的企业信息集成的研究
10-27
In多链路远程接入方案的探讨
10-27
MSComm控件在中文Windows下的通信问题与处理方法
10-27
域名解析系统及配置
本类推荐
本类排行
10-14
智能冰箱控制系统研发
10-14
基于稀疏RSS指纹的室内行人跟踪
10-14
传统美文(古诗词)学习网设计需求分析
10-14
在Web服务的Web服务管理故障诊断模型
10-14
简单的用户注册登录系统-专业课程综合设计课程考核报告
10-14
安卓移动操作系统开放平台
10-14
即时通信概述
10-14
超越台式机:一个关于云计算的介绍
10-14
应用程序基础Android Developers
10-14
健身房管理系统程序运行说明书
小程序中文网
|
小白教程网
|
小程序教学网
|
关于我们
-
服务报价
-
付款方式
广告联系QQ:45157718
电话:13516821613 杭州余杭东港路118号雷恩国际科技创新园
网站技术支持:黄菊华互联网工作室
浙ICP备06056032号