当前位置:首页 > 单片机 > 单片机
[导读]#ifndef __USBREG_H#define __USBREG_H/* usb设备中断定义 usb_devintst usb_devinten usb_devintclr usb_devintdet*/#define FRAME_INT 0x00000001 //每隔1MS产生一次帧中断,该中断用在同步包的传输中#define EP_FA

#ifndef __USBREG_H

#define __USBREG_H

/* usb设备中断定义 usb_devintst usb_devinten usb_devintclr usb_devintdet*/

#define FRAME_INT 0x00000001 //每隔1MS产生一次帧中断,该中断用在同步包的传输中

#define EP_FAST_INT 0x00000002 //端点的快速中断,在端点中断优先级中设置端点优先级别

#define EP_SLOW_INT 0x00000004 //端点的慢速中断,在端点中断优先级中设置端点优先级别

#define DEV_STAT_INT 0x00000008 //usb中断复位 挂起或者改变连接的时候触发

#define CCEMTY_INT 0x00000010 //命令代码寄存器为空的时候中断,标志着写入的命令已经执行

#define CDFULL_INT 0x00000020 //命令数据寄存器已满,现在可以读取数据

#define RxENDPKT_INT 0x00000040 //在端点缓冲区中的当前数据包已经传送给CPU

#define TxENDPKT_INT 0x00000080 //传递到端点缓冲区中的包长度和指定的最大长度相等,端点满

#define EP_RLZED_INT 0x00000100 //端点被使用,在设置选择端点或者设备最大长度的时候完成设置,置位

#define ERR_INT 0x00000200 //usb的任何总线错误中断

/* usb数据传送长度相关 */

#define PKT_LNGTH_MASK 0x000003FF //接收包长度和发送包长度设置的掩码 usb_rxplen usb_txplen

#define PKT_DV 0x00000400 //usb接受包数据有效 在传输过程特别是同步端点中有效 usb_rxplen

#define PKT_RDY 0x00000800 //usb接收包指示的长度有效并随时可以读出(在使用PKT_DV的情况下)usb_rxplen

/* usb控制字节定义 usb_ctrl */

#define CTRL_RD_EN 0x00000001 //usb读模式控制 需要从usb中读取数据

#define CTRL_WR_EN 0x00000002 //usb写模式控制,需要向usb端点写入数据,读写完成时,自动清零

#define CTRL_LOG_ENDPOINT_MASK (0X0F<<2)//2-5位

/* usb命令寄存器的命令 usb_cmd_code 8-15位 02为读 01为写 05为纯命令*/

#define CMD_SET_ADDR 0x00D00500 //设置设备地址 后面跟设备地址 0-6为地址 7为设备使能 1设备使能 0设备不响应自身地址的包

#define CMD_CFG_DEV 0x00D80500 //配置设备,将所有已经使能的非控制端点作出响应(很重要)

#define CMD_SET_MODE 0x00F30500 //设置模式包括时钟 输入端点 输出端点 批量端点的ack

#define CMD_RD_FRAME 0x00F50500 //帧编号

#define DAT_RD_FRAME 0x00F50200 //读取帧编号

#define CMD_RD_TEST 0x00FD0500 //测试寄存器

#define DAT_RD_TEST 0x00FD0200 //读取测试寄存器,如果usb_clk在运行,那么将返回0xa50f

#define CMD_SET_DEV_STAT 0x00FE0500 //设置设备状态 包括usb连接 uab挂起或者usb总线复位

#define CMD_GET_DEV_STAT 0x00FE0500 //获取设备状态

#define DAT_GET_DEV_STAT 0x00FE0200 //读取设备状态

#define CMD_GET_ERR_CODE 0x00FF0500 //获取错误代码

#define DAT_GET_ERR_CODE 0x00FF0200 //读取错误代码 数据低四位是错误代码 0x0000无错误

#define CMD_RD_ERR_STAT 0x00FB0500 //读取错误状态 包括crc错误 pid错误 填充错误等usb总线错误

#define DAT_RD_ERR_STAT 0x00FB0200 //读取错误状态

#define DAT_WR_BYTE(x) (0x00000100 | ((x) << 16)) //向usb命令数据寄存器写入数据,因为只有16-23位是有效的

#define CMD_SEL_EP(x) (0x00000500 | ((x) << 16)) //usb选择端点

#define DAT_SEL_EP(x) (0x00000200 | ((x) << 16)) //选择端点 可以获得端点状态端点空 满或者其他

#define CMD_SEL_EP_CLRI(x) (0x00400500 | ((x) << 16)) //usb选择端点/清除中断

#define DAT_SEL_EP_CLRI(x) (0x00400200 | ((x) << 16)) //usb设置端点状态(端点使能,端点暂停 速率反馈等)

#define CMD_SET_EP_STAT(x) (0x00400500 | ((x) << 16)) //

#define CMD_CLR_BUF 0x00F20500

#define DAT_CLR_BUF 0x00F20200 //usb清除端点缓冲区

#define CMD_VALID_BUF 0x00FA0500 //确认缓冲区,当该命令发送时,告诉端点下一个in包来的时候将端点缓冲区数据发送到主机

/* 设备地址设置 0-6为地址 7为设备使能 1设备使能 0设备不响应自身地址的包*/

#define DEV_ADDR_MASK 0x7F

#define DEV_EN 0x80

/* 设备配置 所有已经使能的非控制端点作出响应*/

#define CONF_DVICE 0x01

/* 设置模式 命令的数据定义 */

#define AP_CLK 0x01 //在挂起状态是否能够关闭48M时钟

#define INAK_CI 0x02 //控制IN端点的nak中断 0数据处理成功完成之后才返回nak中断 1

#define INAK_CO 0x04 //控制out端点的nak中断

#define INAK_II 0x08 //中断in端点的nak中断

#define INAK_IO 0x10 //中断out端点的nak 中断

#define INAK_BI 0x20 //批量in nak端点的nak中断

#define INAK_BO 0x40 //批量out端点的nak中断

/* 设置设备状态的命令数据定义 */

#define DEV_CON 0x01 // 0 connect关键低电平 1 connect管脚高电平

#define DEV_CON_CH 0x02 //连接发生了改变

#define DEV_SUS 0x04 //设备被挂起

#define DEV_SUS_CH 0x08 //设备挂起位发生变化

#define DEV_RST 0x10 //设备接收到总线复位

/* 错误代码数据定义 */

#define ERR_EC_MASK 0x0F //错误代码掩码

#define ERR_EA 0x10 //当前存在错误代码

/* 错误状态的具体定义 */

#define ERR_PID 0x01 //PID编码错误

#define ERR_UEPKT 0x02 //意外的数据包

#define ERR_DCRC 0x04 //数据crc错误

#define ERR_TIMOUT 0x08 //超时错误

#define ERR_EOP 0x10 //数据包结尾错误

#define ERR_B_OVRN 0x20 //缓冲区溢出

#define ERR_BTSTF 0x40 //位填充错误

#define ERR_TGL 0x80 //数据PID中的错误翻转位

/* 端点选择寄存器返回的端点信息 */

#define EP_SEL_F 0x01 //in端点空或者out端点满

#define EP_SEL_ST 0x02 //暂停的端点指示器

#define EP_SEL_STP 0x04 //所选端点上一次接受到setup包

#define EP_SEL_PO 0x08 //之前接受到包被setup包覆盖

#define EP_SEL_EPN 0x10 //设备发送nack

#define EP_SEL_B_1_FULL 0x20 //缓冲区1状态 1满 0空

#define EP_SEL_B_2_FULL 0x40

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭