阅读:1839回复:11
AN2131Q交流
我现在是在做一个采集系统的传输部分。就是把采集到的数据存放到闪存中,这些完成后,将此外设中的闪存中的大容量的信息经过usb芯片传送到电脑里。所以我想要用到bulk传输,我用EZ-USB的芯片AN2131Q,现在准备改一下他们给的例子,但不太清楚是如何改,那位高手给点经验。谢谢
|
|
最新喜欢:![]() |
沙发#
发布于:2002-06-09 06:50
只需要每次从存储器里读出一包数据等待主机来取,几乎没有什么要改的,要改的就是描述符表符合你的设备,在满足传输条件的地方加上寻址读操作(可能还有判断握手信号什么的)就完了,写过8051程序就一定不困难。实时系统用fifo比较好,也不必大容量,8k足矣,大了浪费;象你说的非实时系统,填满闪存就停止采样,等待读取,更简单。实时采样系统尽量不要让接口芯片负责采样处理,只负责传输好了,非实时系统就不必另外加mcu专门管理采样。
[编辑 - 6/9/02 by sunkai] |
|
板凳#
发布于:2002-06-09 08:43
首先谢谢sunkai的回答。很棒。我几乎全看了你的帖子。你好象搞ez-usb很久了,高高手了。呵呵。
另有一点不明,你说非实时系统不需要另外的mcu。那么,如果我只改cypress给的例子一定不够,好象还要把原来用于采样的那部分汇编的源程序要用c51将其同usb部分的c程序连编起来,作为工作的程序用,这样理解对不对呀? 另外,我想问firmware编好后要存放到那里呀;需要另外加个ram吗?用于采样的部分的源程序存放到那里呀;用于usb传输的源程序存放到那里呀?不好意思,刚刚上路,很多事情都混了,希望高手点拨一下。不胜感激 |
|
地板#
发布于:2002-06-09 14:32
我前后做了一年时间,哪里敢说是高手,只不过我的经验教训比才学的时候多多了。你的理解很对,我帮你参谋一下程序的结构:因为你的设备是采一段停一停,采样和传输不竞争处理器时间,所以不用另外加mcu,用ezusb的51就可以了,当采样暂停时(闪存已满),开始等待host读取数据,取完后采样重新开始,我认为主循环就是管理采样的程序,以数据是否被host取完做为继续循环的条件。在bulk in endpoint中断服务程序里(或在主循环用查询方式)做读闪存及应付host取数的任务,其实工作程序非常简单。如果需要从host方控制采样参数等等,加一个bulk out endpoint。ezusb的firmware是放在片内8k的ram里的,不用外加ram,firmware随驱动程序的加载而下载到片内,具体做法要看文档,讲的非常详细,有例子参考。
|
|
地下室#
发布于:2002-06-09 21:15
谢谢你的再次回答。今天上午我试着改了个例子,就是porta的那个例子。运行还可以,开发板的绿灯闪了,表示正常工作了,不过我想用示波仪看一看仿真头的波形是否和我设的一样,应该可以吧。这是我明天的任务,呵呵。你认为我下一步应该做什么。我发现很多东西都不用做大的改动。fw甚至是都不用改动。只要编自己的periphal.c就可以了,对吧。我是个新手,给自己的开发定了个计划,你帮着参谋一下。先用两周把c51弄透,然后遍自己的固件(好象不用编),然后用一周做自己的外设的电路板,然后用windriver做设备驱动,最后编windows的应用程序。这个顺序应该可以吧,给个建议。另外,我觉得你挺热心的,交个朋友吧,你是那里的呀,我是长春的。不过也许不久就挪地方了,呵呵。
|
|
5楼#
发布于:2002-06-09 21:21
另有一问,开发板上有个eeprom24lc00,有个例子是针对它的。你说我现在的开发有必要用到eeprom吗?如果我把固件存到那里可以吧,上电将其调到内部ram中。应该可以把。不过好象没那个必要。盼答
|
|
6楼#
发布于:2002-06-09 23:13
1,不用写驱动,你已经有了开发板的驱动,够用,按照文档改动一点就行了
2,你对文档非常不熟悉,有几个你根本就没有看到,我肯定。有些问题你理解不对就是因为你没有看到。 3,eeprom是存放VID&PID用的,必须要的。vid&pid总共有两个,一个在硬件里,用于加载下载firmware的那个驱动(相当ezmon.sys),一个在firmware中,用于在firmware运行后加载描述表中的vid&pid指定的功能驱动(相当ezusb.sys)。 4,固件当然要写,fw只是一个框架,功能部分需要你自己加进去,如上面所述。 5,firmware是在设备上电时由驱动“灌”到片内ram的,不必存放在eeprom中 6,绿灯亮了只能说明开发板可用于调试,加载的是ezmon.sys,全速运行一个完整的firmware后反而会灭掉,这时加载的是ezusb.sys。打开设备管理器可以分别看到是两个不同的设备。 7,我认为最困难的部分是硬件调试(可能我的水平低的缘故),但我相信我的判断是对的。 8,windows程序可根据ezmr(contral pannal的源程序)改编。 我在南京和杭州两地工作, |
|
7楼#
发布于:2002-06-10 10:30
感谢sunkai。你说的文档是指开发板附带的英文说明书还是指附带光盘中的note。我的确看的不太多。不好意思。一定努力。我的e-mail是duanair@sohu.com,以后多联系。
|
|
8楼#
发布于:2002-06-10 15:03
你们好:
我想请问kangfu几个问题。 我现在使用ezusb2136作数据采集卡。我使用了usb的Default USB Device,这样在写8051代码的时候还要考虑编写有关响应主机请求的代码吗?若不用,是不是只写功能指令就行了。 你在上面的文章中谈到vid、pid有两个,怎样区分?在 eeprom中的vid/pid/did是不是自动读到8051ram中(0000h~1b40h)。具体是放在哪里,我们编程是用不用考虑。在主机get devicedescriptor时这些id是不是直接替代USB Default device descriptor中的id? 与应用程序接口,如何保留一个out ep? 谢谢。 |
|
9楼#
发布于:2002-06-10 16:38
有sunkai在,我就不好班门弄斧了把,会让大家笑掉大牙的。
“你在上面的文章中谈到vid、pid有两个,怎样区分?”(你看他们的值就分出来了呀。)eeprom中的vid/pid/did是不是自动读到8051ram中(0000h~1b40h)。(当然了) 我们一起去看文档吧。呵呵,共同进步呀。 |
|
10楼#
发布于:2002-06-10 23:31
能请sunkai网友回答一下吗? 谢谢。 |
|
11楼#
发布于:2002-06-11 00:18
Default USB Device仅用于调试,不用考虑主机请求,只写功能指令。定制设备必须有自己的设备描述符表,并能响应主机侵求。一般不用“B2”load方式,用“B0”时eeprom里只要有7个字节够了。有文档的话请多看看,没有就去下载,我上传过的。这些问题全部都有说明。
|
|