阅读:3131回复:30
请问高手:AN2131QC 可以同时定义 同步和块传输吗?
请问高手:AN2131QC 可以同时定义 同步和块传输吗?
|
|
|
沙发#
发布于:2002-07-26 12:13
哦,这样啊,非要用c++builder么?实在不行就先用vc做个dll,ezmr好用就搬过来,用c++builder调用如何
|
|
板凳#
发布于:2002-07-26 12:00
比如USB网眼
您说他是什么传输? 我用一个工具软件看我的EC300使用的是ISO 他其中的一帧数据出错不影响我的整体监视 我的系统也是这样 我不在乎其中有一段数据丢失、损毁 关键是系统可以稳定的运行 |
|
|
地板#
发布于:2002-07-26 00:23
硬件不做好,一切白扯,采集系统不要数据正确,耍我还是蒙人? :)
|
|
地下室#
发布于:2002-07-25 19:54
这就是我说的不能保证主机准时发in请求的原因,分时系统嘛,你要想定时收发,它可不这样想.
|
|
5楼#
发布于:2002-07-25 15:24
分给完了,被系统骗了2分
关键是硬件方面坚持不用FIFO 而且我对数据正确性没有要求 我刚才又试了一下,10ms读一次,也不行 如果我在采集的时候同时启动一个大程序 采集停掉,最后的几秒出现好像很难读的样子!(和以前一样) |
|
|
6楼#
发布于:2002-07-25 14:47
有两个例子,我最开始采用的和你现在的一样,后来改用IsoStream,结果都不理想.
|
|
7楼#
发布于:2002-07-25 14:35
设备是被动的,要主机每ms都去读一次,数据才能回来,你怎样让os保证每ms都能执行一次deviceioctrl?显然不可以,用死循环不可以,用线程做也不可以,我测试过,做不到这一点,进出一次不只1ms,接收的数据是断断续续的.
|
|
8楼#
发布于:2002-07-25 13:23
这样的话
我们先明确: 固件的程序因其 短小,结构简单 一旦可以正常传输 就可以一往无前的工作下去 就可以断定问题出在host端 驱动我是用的开发板的 应该也没问题 应用上, 1、IOCTL_Ezusb_RESETPIPE 2、IOCTL_EZUSB_START_ISO_STREAM 3、象EzMr一样,建立一个线程,不断的IOCTL_EZUSB_READ_ISO_BUFFER 有漏洞吗? |
|
|
9楼#
发布于:2002-07-25 12:15
我在杭州出差,从南京来
|
|
10楼#
发布于:2002-07-25 12:13
说到这里,我不得不承认并非高手,只不过经历长了一点,失败的次数多一点,说道理论方面的东西还得要真正的高手襄助.从架构和协议来说无论哪种传输方式都应该保证可以长期稳定运行(显然是一句废话).
|
|
11楼#
发布于:2002-07-25 11:01
我公司硬件人员对数据完全正确兴趣不大 只要稳定,您评估一下ISO可以长时间稳定运行吗? |
|
|
12楼#
发布于:2002-07-25 10:17
不会吧,只怕是光急着做东西去了,前期看清看完文档是非常关键的,事半功倍.别人的建议有时也很重要,要是当初我早点咨询懂得用缓存,可以节省2个月的时间和做2块板子的银子和大量的脑细胞.
|
|
13楼#
发布于:2002-07-25 10:08
总之是我e文太差,看不懂说明书
|
|
|
14楼#
发布于:2002-07-24 17:42
bulk in 我开始也是用iso,不久就发觉不能很好地控制它,数据时对时错,改成bulk,起码保证数据完全正确,这时出现丢点的现象,正如你说的,我采取了缓存的办法,就不会丢了,这是我上面建议里的第3.4点. inbuf的大小是固定的64byte,可设置用pairing乒乓.inbuf是不能不断地写入,只有在!busy时才能写入,这是丢点的原因,所以要有个ram缓冲,用fifo是个不错的选择,这样只要成功控制fifo不会满就不会丢点了.iso inbuf是1024,本身就采取双buffer乒乓方式工作 [编辑 - 7/25/02 by sunkai] |
|
15楼#
发布于:2002-07-24 14:55
sunkai 请您在
“Ez_USB/AN2131QC/IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST问题 ” 中出现一下 先把那二十分给您 并向您这样的热心人致敬! |
|
|
16楼#
发布于:2002-07-24 14:35
bulk in
我已经做成一个了 用EZ-USB Control Panel下载 可以稳定的运行, 但又到VENDOR_OR_CLASS_REQUEST_CONTROL的问题了 而且bulk in有一个更致命的弱点: 由于我采用8051直接控制AD 当用户在运行程序时,host程序如果不能及时读取 就出现“丢点”现象 对了这得请教您: 我如果在8051不断的向INnBUF写数据,他可以存多少数据? |
|
|
17楼#
发布于:2002-07-24 09:51
具体编程要靠自己喽,我的建议已经说了,仍然坚持用bulk in的观点
|
|
18楼#
发布于:2002-07-24 08:57
sunkai老兄
这个帖子您也得关照一下! |
|
|
19楼#
发布于:2002-07-23 10:52
可能我的理解有误
现在的情形是: 我修改了EZ-USB的例子IsoStream 他只定义了ISO IN 我只修改了periph.c中的 void ISR_Sof(void) interrupt 0 我现在想加输出,研究了几天例子IsoLoopback没有成功 于是就改为使用缺省端点 使用下列代码 SET_INTERFACE_IN input; input.interfaceNum = 0; input.alternateSetting = 1; if (hDevice != NULL) { bResult = DeviceIoControl (hDevice, IOCTL_Ezusb_SETINTERFACE, &input, sizeof(SET_INTERFACE_IN), NULL, 0, (unsigned long *)&nBytes, NULL); } 可以用EZ-USB Control Panel看到: Get PipeInfo Interface Size 276 Pipe: 0 Type: INT Endpoint: 1 IN MaxPktSize: 0x10 Pipe: 1 Type: BLK Endpoint: 2 IN MaxPktSize: 0x40 Pipe: 2 Type: BLK Endpoint: 2 OUT MaxPktSize: 0x40 Pipe: 3 Type: BLK Endpoint: 4 IN MaxPktSize: 0x40 Pipe: 4 Type: BLK Endpoint: 4 OUT MaxPktSize: 0x40 Pipe: 5 Type: BLK Endpoint: 6 IN MaxPktSize: 0x40 Pipe: 6 Type: BLK Endpoint: 6 OUT MaxPktSize: 0x40 Pipe: 7 Type: ISO Endpoint: 8 IN MaxPktSize: 0x10 Pipe: 8 Type: ISO Endpoint: 8 OUT MaxPktSize: 0x10 Pipe: 9 Type: ISO Endpoint: 9 IN MaxPktSize: 0x10 Pipe: 10 Type: ISO Endpoint: 9 OUT MaxPktSize: 0x10 Pipe: 11 Type: ISO Endpoint: 10 IN MaxPktSize: 0x10 Pipe: 12 Type: ISO Endpoint: 10 OUT MaxPktSize: 0x10 下载8051汇编代码: ;----------------------------------------------------------------- $NOMOD51 ; disable predefined 8051 registers $nolist $include (C:\\Cypress\\USB\\Target\\inc\\ezregs.inc) ; EZ-USB register assignments $list ; NAME eziso ; CSEG AT 0 mov dptr,#IN8ADDR ; set the FIFO start for EP8 to 0 mov a,#0 movx @dptr,a mov a,#0xFF mov dptr,#OEC movx @dptr,a mov dptr,#OEB movx @dptr,a mov dptr,#OEA movx @dptr,a ljmp loop ; ------------------------------------------------- org 100h ; ------------------------------------------------- loop: mov dptr,#USBIRQ ; wait for SOF IRQ bit movx a,@dptr jb acc.1,IsoIn mov dptr,#OUT2CS ; EP2OUT Control & Status reg movx a,@dptr jb acc.1,loop ; busy-keep checking ; service_OUT2: mov dptr,#OUT2BUF movx a,@dptr mov r7,a inc dptr movx a,@dptr mov r6,a inc dptr movx a,@dptr mov dptr,#OUTA movx @dptr,a mov a,r6 mov dptr,#OUTB movx @dptr,a mov a,r7 mov dptr,#OUTC movx @dptr,a mov dptr,#OUT2BC ; load anything to byte count to re-arm mov a,#1 ; any value movx @dptr,a sjmp loop ; IsoIn: mov a,#00000010b ; SOFIR bit movx @dptr,a ; writing 1 clears the SOF IRQ bit ; mov dptr,#USBFRAMEH ; put the frame number into first two EP8IN bytes movx a,@dptr mov dptr,#IN8DATA ; \"IN8DATA\" is a FIFO inside the EZ-USB chip movx @dptr,a ; byte 0 mov dptr,#USBFRAMEL movx a,@dptr mov dptr,#IN8DATA movx @dptr,a ; byte 1 ; mov r2,#24 loop_cm: mov dptr,#PINSC ; read PORTC pins movx a,@dptr mov dptr,#IN8DATA movx @dptr,a mov a,#0 movx @dptr,a djnz r2,loop_cm ; sjmp loop ; END 我的应用程序(ISO IN and BULK OUT)欢快的运行起来 但不幸的是或 2小时 或 5小时 程序停止 但没有死机 可以重新启动采集线程,程序又可运行,但依然会在一会停下来 我不知道是怎么会事 请高手指点 如果需要我可以把源代码发给您! |
|
|
上一页
下一页