📄 ch374inc.inc
字号:
;#define M_SET_EP0_TRAN_NAK( old ) ( (old) & ~ BIT_EP0_TRAN_RESP | 0x0E ) ; 仅USB设备方式: 端点0发送响应/应答NAK */
;#define M_SET_EP0_TRAN_STA( old ) ( (old) & ~ BIT_EP0_TRAN_RESP | 0x0F ) ; 仅USB设备方式: 端点0发送响应/应答STALL */
BIT_EP0_RECV_RESP EQU 030H ; 仅USB设备方式: 端点0接收响应: 00-应答ACK, 01-禁用, 10-应答NAK, 11-应答STALL */
;#define M_SET_EP0_RECV_ACK( old ) ( (old) & ~ BIT_EP0_RECV_RESP | 0x00 ) ; 仅USB设备方式: 端点0接收响应/应答ACK */
;#define M_SET_EP0_RECV_NAK( old ) ( (old) & ~ BIT_EP0_RECV_RESP | 0x20 ) ; 仅USB设备方式: 端点0接收响应/应答NAK */
;#define M_SET_EP0_RECV_STA( old ) ( (old) & ~ BIT_EP0_RECV_RESP | 0x30 ) ; 仅USB设备方式: 端点0接收响应/应答STALL */
BIT_EP0_TRAN_TOG EQU 040H ; 仅USB设备方式: 端点0发送同步标志: 0-DATA0, 1-DATA1 */
BIT_EP0_RECV_TOG EQU 080H ; 仅USB设备方式: 端点0接收同步标志: 0-DATA0, 1-DATA1 */
BIT_EP1_TRAN_RESP EQU 00FH ; 仅USB设备方式: 端点1发送响应: 0000~1000-应答数据长度0~8, 1110-应答NAK, 1111-应答STALL,其它值-禁用 */
;#define M_SET_EP1_TRAN_ACK( old, len ) ( (old) & ~ BIT_EP1_TRAN_RESP | (len) & 0x0F ) ; 仅USB设备方式: 端点1发送响应/应答ACK */
;#define M_SET_EP1_TRAN_NAK( old ) ( (old) & ~ BIT_EP1_TRAN_RESP | 0x0E ) ; 仅USB设备方式: 端点1发送响应/应答NAK */
;#define M_SET_EP1_TRAN_STA( old ) ( (old) & ~ BIT_EP1_TRAN_RESP | 0x0F ) ; 仅USB设备方式: 端点1发送响应/应答STALL */
BIT_EP1_RECV_RESP EQU 030H ; 仅USB设备方式: 端点1接收响应: 00-应答ACK, 01-禁用, 10-应答NAK, 11-应答STALL */
;#define M_SET_EP1_RECV_ACK( old ) ( (old) & ~ BIT_EP1_RECV_RESP | 0x00 ) ; 仅USB设备方式: 端点1接收响应/应答ACK */
;#define M_SET_EP1_RECV_NAK( old ) ( (old) & ~ BIT_EP1_RECV_RESP | 0x20 ) ; 仅USB设备方式: 端点1接收响应/应答NAK */
;#define M_SET_EP1_RECV_STA( old ) ( (old) & ~ BIT_EP1_RECV_RESP | 0x30 ) ; 仅USB设备方式: 端点1接收响应/应答STALL */
BIT_EP1_TRAN_TOG EQU 040H ; 仅USB设备方式: 端点1发送同步标志: 0-DATA0, 1-DATA1 */
BIT_EP1_RECV_TOG EQU 080H ; 仅USB设备方式: 端点1接收同步标志: 0-DATA0, 1-DATA1 */
BIT_HOST_PID_ENDP EQU 00FH ; 仅USB主机方式: 目的端点号: 0000~1111-端点号0~15 */
BIT_HOST_PID_TOKEN EQU 0F0H ; 仅USB主机方式: 指定事务/令牌PID: 1101-SETUP事务, 0001-OUT事务, 1001-IN事务, 0101-SOF包,其它值-禁用 */
;M_MK_HOST_PID_ENDP( pid, endp ) ( (pid) << 4 | (endp) & BIT_HOST_PID_ENDP ) ; 用事务/令牌PID和目的端点号生成USB主机令牌数据 */
BIT_EP2_TRAN_RESP EQU 003H ; 仅USB设备方式: 端点2发送响应: 00-应答数据, 01-同步/等时传输, 10-应答NAK, 11-应答STALL */
;#define M_SET_EP2_TRAN_ACK( old ) ( (old) & ~ BIT_EP2_TRAN_RESP | 0x00 ) ; 仅USB设备方式: 端点2发送响应/应答ACK */
;#define M_SET_EP2_TRAN_ISO( old ) ( (old) & ~ BIT_EP2_TRAN_RESP | 0x01 ) ; 仅USB设备方式: 端点2发送响应/同步/等时传输/无需应答 */
;#define M_SET_EP2_TRAN_NAK( old ) ( (old) & ~ BIT_EP2_TRAN_RESP | 0x02 ) ; 仅USB设备方式: 端点2发送响应/应答NAK */
;#define M_SET_EP2_TRAN_STA( old ) ( (old) & ~ BIT_EP2_TRAN_RESP | 0x03 ) ; 仅USB设备方式: 端点2发送响应/应答STALL */
BIT_EP2_RECV_RESP EQU 030H ; 仅USB设备方式: 端点2接收响应: 00-应答ACK, 01-同步/等时传输, 10-应答NAK, 11-应答STALL */
;#define M_SET_EP2_RECV_ACK( old ) ( (old) & ~ BIT_EP2_RECV_RESP | 0x00 ) ; 仅USB设备方式: 端点2接收响应/应答ACK */
;#define M_SET_EP2_RECV_ISO( old ) ( (old) & ~ BIT_EP2_RECV_RESP | 0x10 ) ; 仅USB设备方式: 端点2接收响应/同步/等时传输/不作应答 */
;#define M_SET_EP2_RECV_NAK( old ) ( (old) & ~ BIT_EP2_RECV_RESP | 0x20 ) ; 仅USB设备方式: 端点2接收响应/应答NAK */
;#define M_SET_EP2_RECV_STA( old ) ( (old) & ~ BIT_EP2_RECV_RESP | 0x30 ) ; 仅USB设备方式: 端点2接收响应/应答STALL */
BIT_EP2_TRAN_TOG EQU 040H ; 仅USB设备方式: 端点2发送同步标志: 0-DATA0, 1-DATA1 */
BIT_EP2_RECV_TOG EQU 080H ; 仅USB设备方式: 端点2接收同步标志: 0-DATA0, 1-DATA1 */
BIT_HOST_TRAN_ISO EQU 001H ; 仅USB主机方式: 主机发送的传输类型: 0-控制/批量/中断传输, 1-同步/等时传输 */
BIT_HOST_NAK_RETRY EQU 004H ; 仅USB主机方式: 收到NAK应答自动重试直到非NAK应答或者达到4S超时时间 */
BIT_HOST_START EQU 008H ; 仅USB主机方式: 主机传输启动控制: 0-暂停, 1-启动传输,完成后自动清0 */
BIT_HOST_RECV_ISO EQU 010H ; 仅USB主机方式: 主机接收的传输类型: 0-控制/批量/中断传输, 1-同步/等时传输 */
BIT_HOST_TRAN_TOG EQU 040H ; 仅USB主机方式: 主机发送同步标志: 0-DATA0, 1-DATA1 */
BIT_HOST_RECV_TOG EQU 080H ; 仅USB主机方式: 主机接收同步标志: 0-DATA0, 1-DATA1 */
; 状态及命令等常量 */
CMD_SPI_374READ EQU 0C0H ; SPI读操作命令 */
CMD_SPI_374WRITE EQU 080H ; SPI写操作命令 */
; ********************************************************************************************************************* */
; USB状态 */
; 以下状态代码用于USB设备方式 */
; 位4指示当前接收的数据包是否同步, 0=不同步, 1-同步 */
; 位3-位2指示当前事务, 00=OUT, 10=IN, 11=SETUP */
; 位1-位0指示当前端点, 00=端点0, 01=端点1, 10=端点2 */
USB_INT_EP0_SETUP EQU 0CH ;USB端点0的SETUP
USB_INT_EP0_OUT EQU 00H ;USB端点0的OUT
USB_INT_EP0_IN EQU 08H ;USB端点0的IN
USB_INT_EP1_OUT EQU 01H ;USB端点1的OUT
USB_INT_EP1_IN EQU 09H ;USB端点1的IN
USB_INT_EP2_OUT EQU 02H ;USB端点2的OUT
USB_INT_EP2_IN EQU 0AH ;USB端点2的IN
; 以下状态代码用于USB主机方式 */
; 位4指示当前接收的数据包是否同步, 0=不同步, 1-同步 */
; 位3-位0指示USB设备的应答: 0010=ACK, 1010=NAK, 1110=STALL, 0011=DATA0, 1011=DATA1, XX00=应答错误或者超时无应答 */
USB_INT_RET_ACK EQU DEF_USB_PID_ACK ; 错误:对于OUT/SETUP事务返回ACK */
USB_INT_RET_NAK EQU DEF_USB_PID_NAK ; 错误:返回NAK */
USB_INT_RET_STALL EQU DEF_USB_PID_STALL ; 错误:返回STALL */
USB_INT_RET_DATA0 EQU DEF_USB_PID_DATA0 ; 错误:对于IN事务返回DATA0 */
USB_INT_RET_DATA1 EQU DEF_USB_PID_DATA1 ; 错误:对于IN事务返回DATA1 */
USB_INT_RET_TOUT EQU 000H ; 错误:应答错误或者超时无应答 */
USB_INT_RET_TOUT1 EQU 004H ; 错误:应答错误或者超时无应答 */
USB_INT_RET_TOUT2 EQU 008H ; 错误:应答错误或者超时无应答 */
USB_INT_RET_TOUT3 EQU 00CH ; 错误:应答错误或者超时无应答 */
; 以下状态代码1XH用于USB主机方式的操作状态代码, 可以自行定义任意值, 下面的定义仅为了兼容CH375 */
USB_INT_SUCCESS EQU 14H ;USB事务或者传输操作成功
USB_INT_CONNECT EQU 15H ;检测到USB设备连接事件
USB_INT_DISCONNECT EQU 16H ;检测到USB设备断开事件
USB_INT_BUF_OVER EQU 17H ;USB控制传输的数据太多, 缓冲区溢出
USB_INT_DISK_READ EQU 1DH ;USB存储器读数据块, 请求数据读出
USB_INT_DISK_WRITE EQU 1EH ;USB存储器写数据块, 请求数据写入
USB_INT_DISK_ERR EQU 1FH ;USB存储器操作失败
; ********************************************************************************************************************* */
; 常用USB结构和相关常量 */
; USB请求类型 */
DEF_USB_REQ_READ EQU 80H ;控制读操作
DEF_USB_REQ_WRITE EQU 00H ;控制写操作
DEF_USB_REQ_TYPE EQU 60H ;控制请求类型
DEF_USB_REQ_STAND EQU 00H ;标准请求
DEF_USB_REQ_CLASS EQU 20H ;设备类请求
DEF_USB_REQ_VENDOR EQU 40H ;厂商请求
DEF_USB_REQ_RESERVE EQU 60H ;保留请求
; USB标准设备请求, RequestType的位6位5=00(Standard) */
DEF_USB_CLR_FEATURE EQU 01H
DEF_USB_SET_FEATURE EQU 03H
DEF_USB_GET_STATUS EQU 00H
DEF_USB_SET_ADDRESS EQU 05H
DEF_USB_GET_DESCR EQU 06H
DEF_USB_SET_DESCR EQU 07H
DEF_USB_GET_CONFIG EQU 08H
DEF_USB_SET_CONFIG EQU 09H
DEF_USB_GET_INTERF EQU 0AH
DEF_USB_SET_INTERF EQU 0BH
DEF_USB_SYNC_FRAME EQU 0CH
; 描述符类型 */
USB_DEVICE_DESCR_TYPE EQU 001H
USB_CONFIG_DESCR_TYPE EQU 002H
USB_STRING_DESCR_TYPE EQU 003H
USB_INTERF_DESCR_TYPE EQU 004H
USB_ENDP_DESCR_TYPE EQU 005H
USB_POWER_DESCR_TYPE EQU 006H
USB_HID_DESCR_TYPE EQU 021H
USB_REPORT_DESCR_TYPE EQU 022H
USB_PHYSIC_DESCR_TYPE EQU 023H
; 端点类型和属性 */
USB_ENDP_DIR_MASK EQU 080H
USB_ENDP_TYPE_MASK EQU 003H
USB_ENDP_TYPE_CTRL EQU 000H
USB_ENDP_TYPE_ISOCH EQU 001H
USB_ENDP_TYPE_BULK EQU 002H
USB_ENDP_TYPE_INTER EQU 003H
; 设备类别 */
USB_DEV_CLASS_RESERVED EQU 000H
USB_DEV_CLASS_AUDIO EQU 001H
USB_DEV_CLASS_COMMUNIC EQU 002H
USB_DEV_CLASS_HUMAN_IF EQU 003H
USB_DEV_CLASS_MONITOR EQU 004H
USB_DEV_CLASS_PHYSIC_IF EQU 005H
USB_DEV_CLASS_POWER EQU 006H
USB_DEV_CLASS_PRINTER EQU 007H
USB_DEV_CLASS_STORAGE EQU 008H
USB_DEV_CLASS_HUB EQU 009H
USB_DEV_CLASS_VEN_SPEC EQU 0FFH
DEFAULT_ENDP0_SIZE EQU 08H ; 默认的端点0最大包长度 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -