ISP1581固件程序及其解析Word下载.docx
《ISP1581固件程序及其解析Word下载.docx》由会员分享,可在线阅读,更多相关《ISP1581固件程序及其解析Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
UCPWROFF:
//保留必须写0
UCWKUPC:
//远程唤醒使能端
UCGLINTE:
//全局中断使能
UCSFRESET:
//软复位0后写1使能软件复位
UCGOSUSP:
//挂起状态使能写1使器件进入到挂起状态
UCSNDRSU:
//发送恢复信号0后写1产生一个持续10ms的信号
UCDISGLBL:
//全局时钟状态设置1挂起时时钟运行0挂起时时钟停止适合低功耗需求
}USB_MODE;
INT_CONFIG
//中断配置寄存器0×
10H决定中断输出的特性.
INT_CONFIG_BITS
UCINTPOL:
//中断极性:
选择INT输出信号极性(0=低电平有效,1=高电平有效)。
总线复位时值不变。
UCINTLVL:
//中断电平:
选择INT输出信道方式(0=电平,1=脉冲)。
若为脉冲方式,一个中断会产生一个60ns的脉冲。
总线复位时值不变
UCDDBGMODOUT:
2;
//数据调试方式OUT*00H:
中断发生在所有的ACK和NAK分组
UCDDBGMODIN:
//数据调试方式IN*01H:
中断发生在所有的ACK分组(和NYET分组–DDBGMODOUT)
UCCDBGMOD:
//控制0调试方式*1XH:
中断发生在所有的ACK分组和第一个NAK[1]分组
//*第一个NAK:
发生在IN或OUT令牌处理的前一个ACK响应后的第一个NAK
}INT_CONFIG;
INT_ENABLE
//中断使能寄存器(地址:
14H)
INT_ENABLE_BITS
UCIERST:
1,
//为1,激活检测到一个总线复位的中断
IESOF:
//为1,激活检测到一个SOF的中断
IEPSOF:
//为1,激活检测到一个伪SOF的中断
IESUSP:
//为1,激活检测到一个“挂起”状态的中断
IERESM:
//为1,激活检测到一个“重新开始”状态的中断
IEHS_STA:
//为1,激活检测到一个高速状态变化的中断
IEDMA:
//为1,激活检测到DMA状态变化的中断
RESERVED3:
//保留
UCIEP0SETUP:
//为1,激活端点0的启动数据接收中断
RESERVED2:
IEP0RX:
//为1,激活控制OUT处理端点0的中断
IEP0TX:
//为1,激活控制IN处理端点0的中断
IEP1RX:
//为1,激活指定端点1的接收中断
IEP1TX:
//为1,激活指定端点1的发送中断
IEP2RX:
//为1,激活指定端点2的接收中断
IEP2TX:
//为1,激活指定端点2的发送中断
UCIEP3RX:
//为1,激活指定端点3的接收中断
IEP3TX:
//为1,激活指定端点3的发送中断
IEP4RX:
//为1,激活指定端点4的接收中断
IEP4TX:
//为1,激活指定端点4的发送中断
IEP5RX:
//为1,激活指定端点5的接收中断
IEP5TX:
//为1,激活指定端点5的发送中断
IEP6RX:
//为1,激活指定端点6的接收中断
IEP6TX:
//为1,激活指定端点6的发送中断
UCIEP7RX:
//为1,激活指定端点7的接收中断
IEP7TX:
//为1,激活指定端点7的发送中断
RESERVED1:
6;
ULVALUE;
}INT_ENABLE;
INTERRUPT_STATUS
//中断寄存器的状态注释同中断使能寄存器
INTERRUPT_STATUS_BITS
UCRESET:
UCSOF:
UCPSOF:
UCSUSP:
UCRESUME:
UCHS_STAT:
UCDMA:
UCRESERVED3:
UCEP0SETUP:
UCRESERVED2:
UCEP0RX:
UCEP0TX:
UCEP1RX:
UCEP1TX:
UCEP2RX:
UCEP2TX:
UCEP3RX:
UCEP3TX:
UCEP4RX:
UCEP4TX:
UCEP5RX:
UCEP5TX:
UCEP6RX:
UCEP6TX:
UCEP7RX:
UCEP7TX:
UCRESERVED1:
}INTERRUPT_STATUS;
ENDPT_MAXSIZE
//端点MaxPacketSize寄存器(地址:
04H)
ENDPT_MAXSIZE_BITS
UCFFOSZ7_0:
8;
//FIFO大小:
为索引端点以字节形式设置FIFO的大小。
应用在HS和FS操作中。
UCFFOSZ10_8:
3;
//FIFO大小8-10位
UCNTRANS:
//处理信息数量(仅适用于HS模式):
0-每微幀1个信息包1-每微幀2个信息包2-每微幀3个信息包3-保留这些位仅应用于同步/中断处理中。
UIVALUE;
}ENDPT_MAXSIZE;
ENDPT_INDEX
//端点索引寄存器(地址:
2CH)
ENDPT_INDEX_BITS
UCDIR:
//方向位:
将目标端点设置成IN或OUT端点:
0-设置成OUT(RX)FIFO目标端点/1-设置成IN(TX)FIFO目标端点
UCENDPIDX:
4;
//端点索引:
为缓冲器长度、控制功能、数据端口、端口类型、MaxPacketSize规定值和短包等寄存器的访问选择目标端点
//为端点0选择SETUP缓冲区:
0-EP0数据缓冲区1-SETUP缓冲区引寄存器来指定目标端点。
UCRESERVED:
}ENDPT_INDEX;
CONTROL
//控制功能寄存器(地址:
28H)
CONTROL_BITS
UCSTALL:
//终止端点:
为1,终止索引的端点。
这一位不能用于同步传输。
UCSTATUS:
//状态响应:
这一位用于控制在SETUP传输状态阶段ACK或NAK信号的产生。
在该状态结束和接收到一个SETUP令牌时自动清除。
//0-发送NAK
//1-IN令牌(主机到设备)处理之后发送一个空包或OUT令牌处理(设备到主机)之后发送ACK信号。
UCVENDP:
//端点有效:
为1,使一个IN端点的TXFIFO数据有效,为下一个IN令牌的处理发送做准备。
//一般而言,当端点的FIFO字节数达到端点MaxPacketSize规定值时端
//点自动生效。
这一位通常用在当端点的FIFO字节数低于端点MaxPacketSize规定
//值时仍要求端点有效的情况下。
UCCLBUF:
//清除缓冲区:
为1,清除索引端点的RX缓冲区;
对TX缓冲器无影响。
一旦端点内容完全读出,RX缓冲区自动清零。
这一位通常用在需要强制清除缓冲区的情况下。
}CONTROL;
ENDPT_TYPE
//端点类型寄存器
ENDPT_TYPE_BITS
UCENDPTYP:
//端点类型:
这2位用于选择端点类型:
01H-同步02H-批量03H-中断
UCDBLBUF:
//双缓冲区设置:
为1,使能索引端点的双缓冲区设置。
为0禁止双缓冲区设置
UCENABLE:
//端点使能:
为1,使能索引端点的FIFO。
在端点MaxPacketSize寄存器中指定存储区大小。
为0禁用FIFO。
UCZERO_PKT_DIS:
//无空包:
如果缓冲区长度寄存器或端点MaxPacketSize寄存器内容为0,该位为0表示将一个空包添加到USB数据的下一个IN令牌。
为1时这个功能禁止。
这位仅应用于DMA模式。
UCRESRVED2:
}ENDPT_TYPE;
ERROR_CODE
ERROR_CODE_BITS
UCRTOK:
UCERROR:
UCRESERVED:
UCDATA01:
UCUNREAD:
}ERROR_CODE;
VALIDSHORT
VALIDSHORT_BITS
UCOUT0SH:
UCOUT1SH:
UCOUT2SH:
UCOUT3SH:
UCOUT4SH:
UCOUT5SH:
UCOUT6SH:
UCOUT7SH:
}VALIDSHORT;
FRAME_NO
//幀数目寄存器(地址:
74H)这是个只读寄存器,它的内容是最近成功接收到的数据的幀开始(SOF)对应的幀的编号。
FRAME_NO_BITS
UCSOFL:
//幀数目0-7位
UCSOFH:
//幀数目8-10位
UCUSOF:
//微祯数目
}FRAME_NO;
TESTMODE
//测试方式寄存器(地址:
84H)
TESTMODE_BITS
UCSE0_NAK:
UCJSTATE:
UCKSTATE:
UCPRBS:
UCFORCEFS:
UCLPBK:
UCPHYTEST:
UCFORCEHS:
}TESTMODE;
DMA_CONFIG
DMA_CONFIG_BITS
UCWIDTH:
UCRES1:
UCDMA_MODE:
UCBURST:
UCCNTENA:
UCPIO_MODE:
UCUDMA_MODE:
UCATA_MODE:
UCIGNORE_IORDY:
UCRES2:
}DMA_CONFIG;
DMA_HARDWARE
DMA_HARDWARE_BITS
UCREAD_POL:
UCWRITE_POL:
UCDREQ_POL:
UCACK_POL:
UCMASTER:
UCEOT_POL:
UCENDIAN:
}DMA_HARDWARE;
DMA_STROBE
DMA_STROBE_BITS
UCDMA_STROBE:
5;
UCRES:
}DMA_STROBE;
DMA_INT
DMA_INT_BITS
UCCMD_AUTO_COMPLETE:
UCINTRQ_PENDING:
UCTASKFILE_READ_COMPLETE:
UCBSY_DRQ_POLL_DONE:
UCSTART_READ_1F0_RD_FIFO:
UCRD_1F0_FIFO_EMPTY:
UCWR_1F0_FIFO_FULL:
UCWR_1F0_FIFO_EMPTY:
UCDMA_DONE:
UCPENDING_INTRQ:
UCINT_EOT:
UCEXT_EOT:
}DMA_INT;
DMA_INT_ENABLE
DMA_INT_ENABLE_BITS
}DMA_INT_ENABLE;
/*
typedefunionDMA_ENDPT
structDMA_ENDPT_BITS
UCDMADIR:
1;
UCEDPIDX:
3;
UCNOT_USED:
4;
}DMA_ENDPT;
*/
DMA_STATE_1
DMA_STATE_1_BITS
UCPIO_SEQ_STATE:
UCPIO_CMD_STATE:
}DMA_STATE_1;
typedefunionDMA_STATE_2
structDMA_STATE_2_BITS
8;
}DMA_STATE_2;
typedefstruct
D14_CNTRL_REG
ADDRESS_REGD14_ADDRESS;
UCDUMMY_01;
UCDUMMY_02;
UCDUMMY_03;
ENDPT_MAXSIZED14_ENDPT_MAXPKTSIZE;
UCDUMMY_06;
UCDUMMY_07;
ENDPT_TYPED14_ENDPT_TYPE;
UCDUMMY_0A;
UCDUMMY_0B;
USB_MODED14_MODE;
UCDUMMY_0D;
UCDUMMY_0E;
UCDUMMY_0F;
INT_CONFIGD14_INT_CONFIG;
UCDUMMY_11;
UCDUMMY_12;
UCDUMMY_13;
INT_ENABLED14_INT_ENABLE;
INTERRUPT_STATUSD14_INT;
UCD14_BUFFER_LENGTH_LSB;
UCD14_BUFFER_LENGTH_MSB;
UCDUMMY_1E;
UCDUMMY_1F;
UCD14_DATA_PORT_LSB;
UCD14_DATA_PORT_MSB;
UCDUMMY_22;
UCDUMMY_23;
VALIDSHORTD14_VALIDATE_SHORT;
UCDUMMY_26;
UCDUMMY_27;
CONTROLD14_CONTROL_FUNCTION;
UCDUMMY_29;
UCDUMMY_2A;
UCDUMMY_2B;
UCD14_ENDPT_INDEX;
UCDUMMY_2D;
UCDUMMY_2E;
UCDUMMY_2F;
UCD14_DMA_COMMAND;
UCDUMMY_31;
UCDUMMY_32;
UCDUMMY_33;
UCD14_DMA_TRANSFER_COUNTER_LSB;
UCD14_DMA_TRANSFER_COUNTER_BYTE2;
UCD14_DMA_TRANSFER_COUNTER_BYTE3;
UCD14_DMA_TRANSFER_COUNTER_MSB;
DMA_CONFIGD14_DMA_CONFIG;
UCDUMMY_3A;
UCDUMMY_3B;
DMA_HARDWARED14_DMA_HARDWARE;
UCDUMMY_3D;
UCDUMMY_3E;
UCDUMMY_3F;
UCD14_DATA_TASKFILE_LSB;
UCDATA_TASKFILE_BYTE2;
UCDATA_TASKFILE_BYTE3;
UCDATA_TASKFILE_MSB;
UCD14_CMD_STATUS_TASKFILE;
UCDUMMY_45;
UCDUMMY_46;
UCDUMMY_47;
UCD14_ERROR_FEATURE_TASKFILE;
UCD14_INTERRUPT_TASKFILE;
UCD14_SECTOR_NUMBER;
UCD14_BYTECOUNT_LSB_TASKFILE;
UCD14_BYTECOUNT_MSB_TASKFILE;
UCD14_DRIVE_SELECT_TASKFILE;
UCD14_ALT_STATUS_DEVCNTRL_TASKFILE;
UCD14_TASKFILE;
DMA_INTD14_DMA_INT;
//DMAreasonregister.
UCDUMMY_52;
UCDUMMY_53;
DMA_INT_ENABLED14_DMA_INT_ENABLE;
UCDUMMY_56;
UCDUMMY_57;
UCD14_DMA_ENDPOINT;
//SelectepforDMAtransfer.
UCDUMMY_59;
UCDUMMY_5A;
UCDUMMY_5B;
DMA_STATE_1D14_DMA_STATE_1;
//Notdefined.Notuse
UCDUMMY_5D;
UCDUMMY_5E;
UCDUMMY_5