Hi, 平台F756, STM32Cube FW_F7 V1.2.0, 基于USB MSC demo 例子程序开发指纹头产品。 指纹头和PC通讯协议是基于SCSI ,协议所有命令是 通过 SCSI 命令0xEF来实现。 比如指纹头协议有30个命令,其中第一个为 CMD_TEST_CONNECTION = 0x01. 第3个为 CMD_GET_PARAM =0x03 目前的问题是第一个命令实现了,PC 上的程序PC_APP可以打开usb设备.但当PC_APP上按“获得参数”按钮,向F756发送 CMD_GET_PARAM命令后, F756程序中仍旧获得第一个命令CMD_TEST_CONNECTION。 感觉是USB bot状态不对,里面的data没被清除,不能正常接收PC_APP发过来的USB/SCSI 命令了。 相关源码如下:(In usbd_msc_scsi.c) 在 int8_t SCSI_ProcessCmd(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)中: ...... case SCSI_VERIFY10: return SCSI_Verify10(pdev, lun, params); case SCSI_PROTOCOL_B_COMMAND: return SCSI_ProcessProtocol(pdev,params); ....... 然后在 SCSI_ProcessProtocol(pdev,params) 中: static int8_t SCSI_ProcessProtocol(USBD_HandleTypeDef *pdev,uint8_t *params) { USBD_MSC_BOT_HandleTypeDef *hmsc = (USBD_MSC_BOT_HandleTypeDef*)pdev->pClassData; uint16_t cmd; if(g_bDeviceOpened==FALSE){ hmsc->bot_state=USBD_BOT_DATA_OUT; USBD_LL_PrepareReceive(pdev,MSC_EPOUT_ADDR, hmsc->bot_data,COMMAND_PACKET_LENGTH); g_bDeviceOpened=TRUE; return 0; } cmd=MAKEWORD(hmsc->bot_data[4],hmsc->bot_data[5]); switch(cmd){ case CMD_TEST_CONNECTION: <-设备打开成功后,即使PC_APP发出CMD_GET_PARAM命令,F756还是得到这个命令 hmsc->bot_state=USBD_BOT_DATA_OUT; if(hmsc->cbw.bmFlags==0x0){ MSC_BOT_SendCSW(pdev,USBD_CSW_CMD_PASSED); hmsc->bot_data_length=0; }else{ MSC_BOT_SendCSW(pdev,USBD_CSW_CMD_PASSED); InitResponsePacket(CMD_TEST_CONNECTION, 0, 0, NULL, 0,0); memcpy(hmsc->bot_data,g_pRcmPacket,RESPONSE_PACKET_LENGTH); hmsc->bot_data_length=RESPONSE_PACKET_LENGTH; } return 0; case CMD_GET_PARAM: <-------永远得不到这个协议命令!!!正常情况下, PC_APP上发出CMD_GET_PARAM命令后,F756上应该得到这个命令 PROTOCOL_GetParam(hmsc); break; ......... 请各位高手帮忙看看是不是我在得到CMD_TEST_CONNECTION命令后,还没有完全处理正确,因此使得下面的其他SCSI命令内容接收不到!!! 万分感激! |
USBH CDC通讯,如何修改通讯波特率?
STM32F407 USB的IN端点只能是0x81么?
求技术解答,STM32H723的USB模拟U盘应用过程遇到了问题。
请问一下,我的nucleo板子连接usb线,找不到target,一直无法下载程序怎么回事呢?
请问一下,stm32WB有可以驱动声卡的驱动程序吗(声卡是PCM2704)?
STM32F407 USB怎么测试接口的极限速度
我的电脑识别不到STM32的ST-LINK驱动(特指针对芯片stm32wle5ccu6)
请问各位大佬,STM32F4怎么利用Typec口OTG,硬件电路怎么实现
stm32 usb复合设备支持键盘鼠标和hid串口通信可以实现吗
stm32f407 开启两路(FS和HS) Custom HID,与上位机通信偶尔中断
是怎么解决的 啊 ???