[原创] 【英飞凌PSOC 62S4 PIONEER KIT 测评】——USB

bitter   2023-5-19 11:34 楼主

英飞凌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的同步传输)。

  • 主要API介绍

Hardware Abstraction Layer (HAL)

  1. 通用

1.USB初始化cyhal_usb_dev_init()

image-20230519113412-1.png  

  1. USB配置cyhal_usb_dev_set_configured()

image-20230519113412-2.png  

其中,cyhal_usb_dev_t结构体为

image-20230519113412-3.png  

其中,cyhal_syspm_callback_data_t结构体为

image-20230519113412-4.png  

其中,(1)cyhal_syspm_callback_state_t枚举为

image-20230519113412-5.png  

(2)cyhal_syspm_callback_mode_t枚举为

image-20230519113412-6.png  

3.USB连接主机cyhal_usb_dev_connect()

image-20230519113412-7.png  

4.USB注册事件回调cyhal_usb_dev_register_event_callback()

image-20230519113412-8.png  

其中,cyhal_usb_dev_event_t枚举为

image-20230519113412-9.png  

  1. 端点管理

1.端点添加cyhal_usb_dev_endpoint_add()

image-20230519113412-10.png  

其中,cyhal_usb_dev_ep_type_t枚举为

image-20230519113412-11.png  

注意:①当enable参数为false,不关心端点的类型为什么

②这个函数不能被用来配置端点0(控制端点)

2.注册端点回调cyhal_usb_dev_register_endpoint_callback()

image-20230519113412-12.png  

  1. 端点0(控制端点)管理
  1. 获取端点0的最大包大小cyhal_usb_dev_ep0_get_max_packet()

image-20230519113412-13.png  

  1. 读setup包内容cyhal_usb_dev_ep0_setup_read_result()

image-20230519113412-14.png  

Peripheral driver library(PDL)

  1. 初始化
  1. USB初始化Cy_USBFS_Dev_Drv_Init()

image-20230519113412-15.png  

其中,cy_stc_usbfs_dev_drv_config_t结构体为

image-20230519113412-16.png  

其中,(1)cy_en_usbfs_dev_drv_ep_management_mode_t枚举为

image-20230519113412-17.png  

(2)cy_stc_usbfs_dev_drv_dma_config_t结构体为

image-20230519113412-18.png  

(3)cy_en_usbfs_dev_ep_access_t枚举为

image-20230519113412-19.png  

  1. USB使能Cy_USBFS_Dev_Drv_Enable()

image-20230519113412-20.png  

  1. USB设置地址Cy_USBFS_Dev_Drv_SetAddress()

image-20230519113412-21.png  

  1. USB设置设备地址Cy_USBFS_Dev_Drv_SetDeviceAddress()

image-20230519113412-22.png  

  1. 中断
  1. USB中断处理Cy_USBFS_Dev_Drv_Interrupt()

image-20230519113412-23.png  

注意:在用户自定义的中断服务线程中必须调用该函数。

  1. 设置USB中断等级Cy_USBFS_Dev_Drv_SetInterruptsLevel()

image-20230519113412-24.png  

  1. 使能端点0中断Cy_USBFS_Dev_Drv_EnableEp0Interrupt()

image-20230519113412-25.png  

  1. 端点0设置
  1. 往端点0写Cy_USBFS_Dev_Drv_Ep0Write()

image-20230519113412-26.png  

  1. 终止端点0Cy_USBFS_Dev_Drv_Ep0Stall()

image-20230519113412-27.png  

  1. 读取端点0最大数据包大小Cy_USBFS_Dev_Drv_GetEp0MaxPacket()

image-20230519113412-28.png  

  1. 数据端点
  1. 添加端点Cy_USBFS_Dev_Drv_AddEndpoint()

image-20230519113412-29.png  

其中,cy_stc_usb_dev_ep_config_t结构体为

image-20230519113412-30.png  

  1. 获取端点状态Cy_USBFS_Dev_Drv_GetEndpointState()

image-20230519113412-31.png  

  1. 端点加载数据Cy_USBFS_Dev_Drv_LoadInEndpoint()

image-20230519113412-32.png  

  1. 使能输出端点Cy_USBFS_Dev_Drv_EnableOutEndpoint()

image-20230519113412-33.png  

  1. 读输出端点数据Cy_USBFS_Dev_Drv_ReadOutEndpoint()

image-20230519113412-34.png  

  1. 低功耗
  1. USB进入深度睡眠Cy_USBFS_Dev_Drv_Suspend()

image-20230519113412-35.png  

注意:当USB进入深度睡眠时,被唤醒后,其输入输出缓冲区中的数据将丢失。

  1. USB退出深度睡眠Cy_USBFS_Dev_Drv_Resume()

image-20230519113412-36.png  

回复评论 (1)

这个当enable参数为false,不关心端点的类型为什么

是这样的省事

点赞  2023-5-20 11:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复