求助:单片机+CH376读写ps2游戏手柄单片机

u盘单片机_u盘单片机【价格 图片】_淘宝网u盘单片机_淘宝网
您可能还感兴趣的宝贝
淘宝网为您找到 144 件u盘单片机相关的宝贝。您还可以找正品
等宝贝信息&>&&>&&>&&>&单片机+CH376读写U盘、SD卡中的文件
单片机+CH376读写U盘、SD卡中的文件
上传大小:947KB
CH376评估板说明及单片机使用U盘和SD卡移动存储的应用参考 单片机通过CH376读写U盘和SD卡中的文件或控制其它USB设备
综合评分:0(0位用户评分)
所需积分:2
下载次数:1
审核通过送C币
创建者:qianleikuihai
创建者:baogangxitu
创建者:caozhy
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
单片机+CH376读写U盘、SD卡中的文件
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
shine071201
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:博客访问: 217235
博文数量: 91
博客积分: 1695
博客等级: 上尉
技术积分: 1378
注册时间:
喜欢美食, 旅行..
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
USB学习笔记:CH372基本读写程序(51单片机)
&&&&&&& CH372官网上已经给出了CH372的测试程序,下面是我在官方网站的测试程序的基础上进行整理和梳理。CH375支持USB-HOST主机方式和USB-DEVICE/SLAVE 设备方式。,而CH375从设备方式与CH372的功能程序是一样的,于是两者作为从机芯片是一样的。
&&&&&&& CH372 内置了USB 通讯中的底层协议,具有省事的内置固件模式和灵活的外置固件模式。在内置固件模式下,CH372自动处理默认端点0 的所有事务,本地端单片机只要负责数据交换,所以单片机程序非常简洁。在外置固件模式下,由外部单片机根据需要自行处理各种USB 请求,从而可以实现符合各种USB 类规范的设备。为了简单起见,一般PC机与单片机通信使用内置固件模式,下面程序也是基于内置固件模式的。
#pragma NOAREGS&&&&&&&&&&&&&&& &//禁止编译器使用绝对寄存器寻址,一定要加上
#include &&&&&&&&&&&&&&& //51单片机头文件
#include "CH375INC.H"&&&&&&&&&&&//CH372/CH375头文件
///////////////////////////////////////////////
//说明: CH372总线地址,这个是按照学习笔记1总线扩展方式定的
//&&&&&& 采用别的方式,地址另外设定
///////////////////////////////////////////////
unsigned char volatile xdata CH375_CMD_PORT _at_ 0x03F1;&&&&&&&&&&
unsigned char volatile xdata CH375_DAT_PORT _at_ 0x03F0;
/*********************延时程序********************/
///////////////////////////////////////////////
//函数:delay2us
//说明:延时2us
//入口:无
//返回:无
///////////////////////////////////////////////
void&&& delay2us( )&&
&&& for ( i = 2; i != 0; i -- );&&&
///////////////////////////////////////////////
//函数:delay50ms
//说明:延时50ms
//入口:无
//返回:无
///////////////////////////////////////////////
void&&& Delay50ms( )&&
&&& unsigned char i,&&
&&& for ( i="200"; i!=0; i-- ) for ( j="250"; j!=0; j-- );&&
/*********************基本读写程序********************/
///////////////////////////////////////////////
//函数:CH375_WR_CMD_PORT
//说明:写USB命令
//入口:unsigned char cmd:待写入命令
//返回:无
///////////////////////////////////////////////
void CH375_WR_CMD_PORT( unsigned char cmd )&&&
&&& delay2us();&&
&&& CH375_CMD_PORT=&&
&&& delay2us();&&
///////////////////////////////////////////////
//函数:CH375_WR_DAT_PORT
//说明:写一字节USB数据
//入口:unsigned char dat:待写入一字节数据
//返回:无
///////////////////////////////////////////////
void CH375_WR_DAT_PORT( unsigned char dat )&&&
&&& CH375_DAT_PORT=&&
///////////////////////////////////////////////
//函数:CH375_RD_DAT_PORT
//说明:读一字节USB数据
//入口:无
//返回:从CH372/CH375读一字节数据
///////////////////////////////////////////////
unsigned char CH375_RD_DAT_PORT( void )&&&
&&& return( CH375_DAT_PORT );&&
/*********************初始化和中断服务程序********************/
///////////////////////////////////////////////
//函数:CH375_Init
//说明:CH372/CH375初始化
//入口:无
//返回:无
///////////////////////////////////////////////
void&&& CH375_Init( )&&
&&& /* 设置USB工作模式, 必要操作 */
&&& CH375_WR_CMD_PORT( CMD_SET_USB_MODE );&& //设置USB工作模式
&&& CH375_WR_DAT_PORT( 2 );&&& //设置为内置固件模式
&&& for ( i="100"; i!=0; i-- )&&&
&&& {&&&& /* 等待操作成功,通常需要等待10uS-20uS */
&&&&&&& if ( CH375_RD_DAT_PORT( ) == CMD_RET_SUCCESS )&&
/* 下面启用USB中断,CH372/CH375的INT#引脚可以连接到单片机的中断引脚,中断为低电平有效或者下降沿有效,如果不使用中断,那么也可以用查询方式,由单片机程序查询CH372/CH375的INT#引脚为低电平 */
IT0 = 0;&&& &/* 置外部信号为低电平触发 */
&&& IE0 = 0;&&&& /* 清中断标志 */
&&& EX0 = 1;&&& /* 允许CH372中断,假定CH372的INT#引脚连接到单片机的INT0 */
///////////////////////////////////////////////
//函数:mCh375Interrupt
//说明:CH372/CH375中断程序
//入口:无
//返回:无
///////////////////////////////////////////////
void mCh375Interrupt( ) interrupt 0 using 1&&
&&& unsigned char i,
&&& unsigned char data buffer[64];
&&& unsigned char InterruptS&&
&&& CH375_WR_CMD_PORT( CMD_GET_STATUS );& &//获取中断状态并取消中断请求
&&& InterruptStatus = CH375_RD_DAT_PORT( );&&&&&& //获取中断状态
&& &//采用边沿触发的外部中断请求,CPU在相应中断后,自动清除中断标志&&&&&&&&&&&&&&&&&&&&&&&
&&& switch ( InterruptStatus )&&&
&&&&&&& case USB_INT_BUS_RESET1:&& //USB总线复位
&&&&&&& case USB_INT_BUS_RESET2:&& //USB总线复位
&&&&&&& case USB_INT_BUS_RESET3:&& //USB总线复位
&&&&&&& case USB_INT_BUS_RESET4:&& //USB总线复位
&&&&&&& case USB_INT_EP0_SETUP:
&&&&&&& {&&& //端点0 的接收器接收到数据,SETUP 事务成功,内部固件模式时不需要处理
&&&&&&& case USB_INT_EP0_OUT:
&&&&&&& {&&& //端点0 的接收器接收到数据,OUT 事务成功,内部固件模式时不需要处理
&&&&&&&&&&& &&
&&&&&&& case USB_INT_EP0_IN:
&&&&&&& {&& //端点0 的发送器发送完数据,IN 事务成功,内部固件模式时不需要处理
&&&&&&&&&&& &
&&&&&&& case USB_INT_EP2_OUT:&&&&&&&&&&& //批量端点/端点2接收到数据,OUT成功
&&&&&&& {&&&& //从当前USB中断的端点缓冲区读取数据块,并释放缓冲区
&&&&&&&&&&&&&&&&&&&& CH375_WR_CMD_PORT( CMD_RD_USB_DATA );&
&&&&&&&&&&&&&&&&&&&& length = CH375_RD_DAT_PORT( );& /* 首先读取后续数据长度 */
&&&&&&&&&&&&&&&&&&&& for ( i = 0; i < i ++ ) buffer[ i ] = CH375_RD_DAT_PORT( ); &//接收数据包
&&&&&&&&&&&&&&&&&&&&
/* -----------测试数据正确性,将接收到的命令包数据返回给PC机----------- */
&&&&&&&&&&&&&&&&&&&& CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 );&
/* 向USB端点2的发送缓冲区写入数据块 */
&&&&&&&&&&&&&&&&&&&& CH375_WR_DAT_PORT( length );&
/* 首先写入后续数据长度,回传刚接收到的数据长度 */
&&&&&&&&&&&&&&&&&&&& for ( i = 0; i < i ++ ) CH375_WR_DAT_PORT( buffer[ i ] );&
/* 数据返回,由计算机应用程序测试数据是否正确 */
&&&&&&&&& /* ------------------------------------------------------------------------------------------------------ */
&&&&&&&&&&&&&&&&&&&&
&&&&&&& }& &
&&&&&&& case USB_INT_EP2_IN:&&&&&&&&&&&& //批量端点/端点2发送完数据,IN成功
&&&&&&& {&&&&
&&&&&&&&&&& CH375_WR_CMD_PORT( CMD_UNLOCK_USB );&&& //释放当前USB缓冲区
&&&&&&&&&&& &&
&&&&&&& }&&
&&&&&&& default:&&
&&&&&&& {&&&&
&&&&&&&&&&& CH375_WR_CMD_PORT( CMD_UNLOCK_USB );&&&
&&&&&&&&&&& &&
&&&&&&& }&&
///////////////////////////////////////////////
//函数:main
//说明:主程序。对CH372初始化,对USB进行读写及其他程序
//入口:无
//返回:无
///////////////////////////////////////////////
&&& Delay50ms( );
CH375_Init( );&&&& //对CH375/CH372初始化
EA = 1;&&&&&&&&&& //允许中断
下面是中断状态的分析说明。在内置固件模式的USB设备方式下,单片机只需要处理表中标注为灰色的中断状态,CH372 内部自动处理了其它中断状态。所以可以看到中断服务程序中对端点0的SETUP、OUT和IN还有USB总线复位都不做处理。
文章转自:
阅读(2844) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。&CH376S_datasheet
秒后自动跳转到登录页
快捷登录:
举报类型:
不规范:上传重复资源
不规范:标题与实际内容不符
不规范:资源无法下载或使用
其他不规范行为
违规:资源涉及侵权
违规:含有危害国家安全等内容
违规:含有反动/色情等内容
违规:广告内容
详细原因:
任何违反下载中心规定的资源,欢迎Down友监督举报,第一举报人可获5-10下载豆奖励。
视频课程推荐
CH376S_datasheet
上传时间:
技术分类:
资源评价:
(0位用户参与评价)
已被下载&1&次
单片机读写U盘,借助USB芯片,CH376是一个含有FAT32固件的读写U盘,SD卡的芯片。
本资料共包含以下附件:
CH375_datasheet.pdf
CH376S_datasheet.pdf
CH376S_datasheet.pdf
51CTO下载中心常见问题:
1.如何获得下载豆?
1)上传资料
2)评论资料
3)每天在首页签到领取
4)购买VIP会员服务,无需下载豆下载资源
5)更多途径:点击此处
2.如何删除自己的资料?
下载资料意味着您已同意遵守以下协议:
1.资料的所有权益归上传用户所有
2.未经权益所有人同意,不得将资料中的内容挪作商业或盈利用途
3.51CTO下载中心仅提供资料交流平台,并不对任何资料负责
4.本站资料中如有侵权或不适当内容,请邮件与我们联系()
5.本站不保证资源的准确性、安全性和完整性, 同时也不承担用户因使用这些资料对自己和他人造成任何形式的伤害或损失
下载1314次
下载1152次
下载1197次
相关专题推荐
敏捷开发是一种以人为核心、迭代、循
本书适合Python爱好者、大中专院校学
本专题为Python数据挖掘与分析经典资
本专题以西门子S7-300/400 PLC的硬件
本专题视频分为6部:1.软件测试基础视
Head First 系列书籍是由 O'Relly 出
觅风-易语言零基础视频教程(42集全)
这是由CSVT中谷教育录制的Python系列
本视频从网络上整理而来,是传智播客
本视频教程以循序渐进的方式讲解了QT
本视频由窗内网录制,根据《Ruby on
PowerBuilder 9.0基础学习视频共分三
数据结构是计算机存储、组织数据的方
Verilog HDL是一种硬件描述语言(HDL
还在为错过了2014 WOT全球软件技术峰
本次2015 WOT·北京站将邀请国内外顶
意见或建议:
联系方式:
您已提交成功!感谢您的宝贵意见,我们会尽快处理21ic官方微信 -->
最新搜索:
您现在的位置是: > > >
推荐星级:
已有 222035 个资源
CH376SCH376是文件管理控制芯片,用于单片机系统读写 U 盘或者 SD 卡中的文件。
部分文件列表
CH376S.pdf
该用户分享的资料
该资料最近下载的用户
共有 1 条评论
这个资料可以,很有用}

我要回帖

更多关于 基于单片机的游戏手柄 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信