【英飞凌PSOC 62S4 PIONEER KIT 测评】——USB
根据手册,PSOC 62S4 PIONEER KIT拥有一个USB全速设备接口;该设备最多可以有8个端点,一个控制端点,7个数据端点;支持四种数据传输协议:控制传输(Control)、中断传输(Interrupt)、批量传输(Bulk)、等时传输(Isochronous);提供了一个512字节的SRAM缓冲区,并支持DMA;符合USB2.0规范;支持USB挂起、恢复和删除唤醒;支持三种逻辑传输方式:CUP(非DMA)模式(模式1)、手动DMA模式(模式2)、自动DMA模式(模式3);支持最大数据包大小:512字节(使用模式1和模式2)、1023字节(使用模式3的同步传输)。
Hardware Abstraction Layer (HAL)
- 通用
1.USB初始化cyhal_usb_dev_init()
- USB配置cyhal_usb_dev_set_configured()
其中,cyhal_usb_dev_t结构体为
其中,cyhal_syspm_callback_data_t结构体为
其中,(1)cyhal_syspm_callback_state_t枚举为
(2)cyhal_syspm_callback_mode_t枚举为
3.USB连接主机cyhal_usb_dev_connect()
4.USB注册事件回调cyhal_usb_dev_register_event_callback()
其中,cyhal_usb_dev_event_t枚举为
- 端点管理
1.端点添加cyhal_usb_dev_endpoint_add()
其中,cyhal_usb_dev_ep_type_t枚举为
注意:①当enable参数为false,不关心端点的类型为什么
②这个函数不能被用来配置端点0(控制端点)
2.注册端点回调cyhal_usb_dev_register_endpoint_callback()
- 端点0(控制端点)管理
- 获取端点0的最大包大小cyhal_usb_dev_ep0_get_max_packet()
- 读setup包内容cyhal_usb_dev_ep0_setup_read_result()
Peripheral driver library(PDL)
- 初始化
- USB初始化Cy_USBFS_Dev_Drv_Init()
其中,cy_stc_usbfs_dev_drv_config_t结构体为
其中,(1)cy_en_usbfs_dev_drv_ep_management_mode_t枚举为
(2)cy_stc_usbfs_dev_drv_dma_config_t结构体为
(3)cy_en_usbfs_dev_ep_access_t枚举为
- USB使能Cy_USBFS_Dev_Drv_Enable()
- USB设置地址Cy_USBFS_Dev_Drv_SetAddress()
- USB设置设备地址Cy_USBFS_Dev_Drv_SetDeviceAddress()
- 中断
- USB中断处理Cy_USBFS_Dev_Drv_Interrupt()
注意:在用户自定义的中断服务线程中必须调用该函数。
- 设置USB中断等级Cy_USBFS_Dev_Drv_SetInterruptsLevel()
- 使能端点0中断Cy_USBFS_Dev_Drv_EnableEp0Interrupt()
- 端点0设置
- 往端点0写Cy_USBFS_Dev_Drv_Ep0Write()
- 终止端点0Cy_USBFS_Dev_Drv_Ep0Stall()
- 读取端点0最大数据包大小Cy_USBFS_Dev_Drv_GetEp0MaxPacket()
- 数据端点
- 添加端点Cy_USBFS_Dev_Drv_AddEndpoint()
其中,cy_stc_usb_dev_ep_config_t结构体为
- 获取端点状态Cy_USBFS_Dev_Drv_GetEndpointState()
- 端点加载数据Cy_USBFS_Dev_Drv_LoadInEndpoint()
- 使能输出端点Cy_USBFS_Dev_Drv_EnableOutEndpoint()
- 读输出端点数据Cy_USBFS_Dev_Drv_ReadOutEndpoint()
- 低功耗
- USB进入深度睡眠Cy_USBFS_Dev_Drv_Suspend()
注意:当USB进入深度睡眠时,被唤醒后,其输入输出缓冲区中的数据将丢失。
- USB退出深度睡眠Cy_USBFS_Dev_Drv_Resume()