CH569 USBSS库函数分析

------禁止转载-------
CH56x_usb30_LIB.h
个人使用中的理解,可能有些地方不对,USB3.0芯片独苗一个,花点时间弄弄明白、、、、、、、
1、

void USB30_Device_forceclr(void);

用于清除USBSS控制器内部状态,被USB30D_init函数固定调用。
参数:
返回值:无返回值

2、

UINT8 USB30_Device_Init(void);

用于初始化整个USBSS控制器,包括模块上电,被USB30D_init函数固定调用。
返回值:
1-初始化失败
0-初始化成功

3、

UINT8 USB30_Lib_Getversion(void);

用于获取USBSS函数库版本号。
参数:
返回值:当前版本号,1Byte

4、

void USB30_ISO_Setendp(UINT8 num,FunctionalState Status );

当需要进行同步传输时,将某一个端点的配置成同步端点。
参数:
num:目标端点号

bitValue
71 - direction IN,0 - direction OUT
3:6reservd
0:2endpoint number

Status:ENABLE/DISABLE
返回值:

5、

void USB30_ISO_Setdelay( UINT32 dly );

Set iosdelay.
参数:dly:配置值
返回值:

6、

void USB30_ITP_Enable(FunctionalState Status);

Enable or disbale ITP interrupt.
参数:Status:ENABLE/DISABLE
返回值:

7、

void USB30_OUT_Status(UINT8 endp,UINT8 *nump,UINT16 *len,UINT8 *status);

用于获取芯片完成一次OUT事务传输之后的传输状态。在EP?_OUT_Callback(void)中被固定调用。
参数:
endp:端点号
nump:nump为USB3.0中最小概念,被SPEC直接定义,具体含义参考SPEC.对于CH569/565,这里可能会出现3、2、1、0,对应示例程序中的if和else if的条件,分别进行不同处理。
len:仅当参数nump为0时,该值有意义,表示BURST中最后一个包的长度,否则都应当是1024.
status:可以不用关心,有nump就够了
返回值:

8、

void USB30_OUT_Set(UINT8 endp,UINT8 status,UINT8 nump);

配置芯片OUT事务应答状态。
参数:
endp:端点号
status:应答状态

valuestatus
0hNRDY
1hACK
2hSTALL
othersinvalid

nump:当前可以接收的USB包数量。对于CH569/565:BULK传输nump单次可配最大-4 ;ISO传输单次可配最大-16。
返回值:

9、

void USB30_OUT_ClearIT(UINT8 endp);

清除OUT事务完成中断状态。在EP?_OUT_Callback(void)中被固定调用一次,且配置的endp应当和?相同。如果需要在EP?_OUT_Callback(void)配置下一次的OUT传输,那需要确保在USB30_OUT_Set(...)之前调用此函数。
参数:endp:端点号
返回值:

10、

UINT8 USB30_OUT_ITflag(UINT8 endp); 

返回USBSS OUT事务传输完成中断状态,可能在不使用中断的,而用查询法写代码的时候可以用这个来替代自动进入EP?_OUT_Callback(void)
参数:endp:端点号
返回值:1-有中断、0-无中断

11、

void USB30_IN_Set(UINT8 endp,BOOL lpf,UINT8 status,UINT8 nump,UINT16 TxLen);

配置芯片IN事务应答状态。
参数:
endp:端点号
lpf:last pack flag/end of block,属于USB3.0中最小定义参数,被SPEC直接定义,具体描述参照标准SPCE。如不清楚实际意义,通常保持这个为有效是OK的
status:

valuestatus
0hNRDY
1hACK
2hSTALL
othersinvalid

nump:nump为USB3.0中最小概念,被SPEC直接定义,具体含义参考SPEC。当前准备好上传的包数量,对于CH569/565,仅在status配置成'ACK'时有实际意义,BULK传输时,这里通常值是1、2、3、4;ISO传输时,这里可以是1~16中的任意。
TxLen:如果是单包传输,代表当前发送包的长度;如果是BURST(即nump>1时),代表最后一包的长度。

12、

void USB30_IN_ClearIT(UINT8 endp);

清除IN事务完成中断状态。在EP?_IN_Callback(void)中被固定调用一次,且配置的endp应当和?相同。如果需要在EP?_IN_Callback(void)配置下一次的IN传输,那需要确保在USB30_IN_Set(...)之前调用此函数。
参数:endp:端点号

13、

UINT8 USB30_IN_ITflag(UINT8 endp);

返回USBSS OUT事务传输完成中断状态,可能在不使用中断的,而用查询法写代码的时候可以用这个来替代自动进入EP?_IN_Callback(void)
参数:endp:端点号
返回值:1-有中断、0-无中断

14、

UINT8 USB30_IN_Nump(UINT8 endp);

用于获取芯片完成一次IN事务传输之后的传输状态。在EP?_IN_Callback(void)中被固定调用。对于CH569/565,BULK传输,用于返回配置的本次BURST中剩余未发送的包数量,返回值可能是0、1、2、3,对于ISO传输,返回值可能是0~15 ,表示本次burst中已经发送的包数量。

15、

void USB30_Set_endp_seqnumber(UINT8 endp,PUINT8 seq);

配置某一端点的seq。在同步传输、或者在某些控制传输中可能需要使用。
参数:
endp:目标端点号

bitValue
71 - direction IN,0 - direction OUT
3:6reservd
0:2endpoint number

seq:序列号。序列号为USB3.0中最小概念,被SPEC直接定义,具体含义参考SPEC。对于一个通道,每完成一个包的传输,seq加1,seq从0增加到31后回到0。

16、

void USB30_Send_ERDY(UINT8 endp,UINT8 nump);

用于发送ERDY。ERDY包为USB3.0中最小概念,被SPEC直接定义,具体含义参考SPEC。由从机发送给主机,用于恢复处于“流控”状态的端点,使其能够继续传输。(流控为USB3.0中最小概念,被SPEC直接定义,具体含义参考SPEC。)
通常跟随在USB30_IN_SetUSB30_OUT_Set
参数:
endp:目标端点号

bitValue
71 - direction IN,0 - direction OUT
3:6reservd
0:2endpoint number

nump:该数据通道后续可以接收或者发送的包数量。对于CH569/565,仅在BULK时可能需要调用,endp0该值最大为1,endp1~endp7最大为4。
返回值:无

17、

void USB30_Device_Setaddress( UINT32 address );

设置USB地址。
参数:address:地址,主机通过控制传输下发配置的地址值。
返回值:无

18、

void USB30_IRQHandler();

USB3.0中断服务函数声明。查询法实现USB3.0功能,可以通过在主循环中不断调用该函数实现。
参数:无
返回值:无

19、

UINT16 USB30_StandardReq();

用于处理主机下发的setup请求,处理描述符的回传、USB地址的配置等等。
参数:无
返回值:长度值

含义
0接下去endp0发生方向为主机到从机的传输,有可能的是: 1、控制传输的数据阶段方向为OUT    2、控制传输的状态阶段
1~512数据阶段IN的数据包长度
0xFFFF对该setup进行STALL的回复

20、

UINT16 USB30_NonStandardReq();

处理setup中的非标准请求,在USB30_StandardReq被固定调用。这个函数可有可无吧~
参数:无
返回值:同USB30_StandardReq

21、

UINT16 EP0_IN_Callback();

端点0的IN事务完成中断回调函数,进入此函数,表示之前配置的IN事务传输完成。通常用于处理长度超过512字节的描述符的分包传输。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值