WIFI技术
直播中

邓长生

10年用户 982经验值
擅长:可编程逻辑
私信 关注
[问答]

MATLAB通过dll读EP0 vendor进行读写无响应怎么解决?

在68013A器件写好固件后,通过 USB Controller center 对EP0进行自定义命令操作,通过协议分析仪抓取,数据收发正常




但是,在matlab调用,就没反应
asm = NET.addAssembly('C:Program Files (x86)CypressEZ-USB FX3 SDK1.3binCyUSB.dll');
usbDevices = CyUSB.USBDeviceList(CyUSB.CyConst.DEVICES_CYUSB);
device=usbDevices.Item(1204,4100); %% VID   PID (0x04b4, 0x1004)
CtrlEndPt = device.ControlEndPt; % 0x02
CtrlEndPt.Target=CyUSB.CyConst.TGT_DEVICE;
CtrlEndPt.ReqType=CyUSB.CyConst.REQ_VENDOR;
CtrlEndPt.Direction= CyUSB.CyConst.DIR_TO_DEVICE;
CtrlEndPt.Direction= CyUSB.CyConst.DIR_FROM_DEVICE;%out
CtrlEndPt.ReqCode=0x8A;
CtrlEndPt.Value=1122;
CtrlEndPt.Index=3344;
CtrlEndPt.TimeOut=1000;

XFERSIZE = 8;
buflen = 8;
buf = zeros(1, XFERSIZE,'uint8');
buf(1)=06;%
buf(2)=11;%
buf(3)=33;%
buf(4)=01;%
buf(5)=33;%
buf(6)=44;%
buf(7)=55;%
buf(8)=01;%
XferSuccess = CtrlEndPt.XferData(buf,buflen);

其中xfersuccess 返回值为0
                                                                                                                                                                                                                                                                                                                                                                                                

回帖(1)

刘甜甜

2024-2-27 11:21:05
因为ENDPOINT 0为控制端点,只有一个端点通道(0x00),一次只能传输一个方向数据,而其他endpoint有in/out两个端点通道,您分享的代码中调用了两个数据方向:CtrlEndPt.Direction=CyUSB.CyConst.DIR_TO_DEVICE;
CtrlEndPt.Direction= CyUSB.CyConst.DIR_FROM_DEVICE;%out;
而且您代码中关于vendor command 0x8A应该对应于out方向吧
举报

更多回帖

发帖
×
20
完善资料,
赚取积分