阅读:3469回复:24
5509与isp1581连接,急问枚举问题
文字
各位大牛,大家好! 小弟刚开始使用ISP1581开发USB2.0,与TI的5509相连。 翻了前面很多帖子,拜读了jinghuiren大牛的一些问题。 有些枚举的问题请教: 调试的时候,用仿真器设置断点查看,发现isp1581的中断乱来 置位softct后,没有EP0SETUP中断产生,产生susup中断,busreset中断 还有resume中断。就是各种中断随便来,后来我把所有的中断都不使能,发现中断 标志HS_STAT和BUS_RET还是置1了,真是诡异啊! 我怀疑是我的电路,isp1581和dsp的连接时序有问题,请问有什么特殊的要求吗?哪些地方需要 延时吗? 原来程序在51和1581的连接时,是没有问题的。换到16bit的dsp时,我就将原来的8bit数据传输什么 改为了对应的16bit传输。其他流程都是一样的啊,现在刚开始连主机的标准命令都接收不到,所以 不知道是什么问题啊? 另外,我读id寄存器是没有问题的,ISP1581接的是dsp的ce空间 谢谢大牛的指导啊! |
|
沙发#
发布于:2007-01-25 09:03
bulk in 无响应是中断配置寄存器的问题,已解决,开始调试DMA
|
|
板凳#
发布于:2007-01-24 10:54
feiafei 你好! 我的email: dqy32@sohu.com
昨晚把bulk out管道调通了,但是in 总是有问题,固件根本没有响应,希望和你探讨一下,in管道是中断驱动么? |
|
地板#
发布于:2007-01-23 11:00
dqy32留个联系方式,讨论讨论吧。我email:feiafei@126.com
|
|
地下室#
发布于:2007-01-23 10:59
dqy32留个联系方式,讨论讨论吧
|
|
5楼#
发布于:2007-01-22 10:19
是的
|
|
6楼#
发布于:2007-01-22 09:39
楼主你好,我现在已经调试到主机已经能查找驱动了,下面我打算开始调试bulk端点,请问SET_CONFIG是在驱动安装完后主机才发出的么,bulk端点是不是在SET_CONFIG以后才能开始进行操作,谢谢!
|
|
7楼#
发布于:2007-01-21 20:36
我把读写的周期变短之后,果然数据就读写正确了。但是读写速度变快之后,1K多的数据一起写进管道时就会出现TIMEOUT的错误。真是矛盾啊!
|
|
8楼#
发布于:2007-01-19 13:50
谢谢jinghuiren大牛的中肯回答,其实我一直自己在不断尝试。但是经验不足,所以希望有点建议。呵呵
|
|
9楼#
发布于:2007-01-18 14:56
感觉很明显是时序问题,自己再仔细研究一下读写时序根DSP的连接部分
凡事先要靠自己,认真分析问题可能出现的各种情况,然后通过实验验证。 |
|
10楼#
发布于:2007-01-18 10:20
真是诡异啊,大侠们帮忙啊!
|
|
11楼#
发布于:2007-01-17 15:16
又发现奇怪的现象了。
主机发送数据,如果发送的数据为FF 01 02 03 04 05 06 07 08,设备接收到的就为00 00 02 03 04 05 06 07 08;如果发送的数据为FF FF 01 02 03 04 05 06 07 08,那么设备接受的为01 02 03 04 05 06 07 08 0F 3B,难道是驱动对开始为FF的数据包有操作? 有没有高手碰到过这种情况,请指导一下吧! |
|
12楼#
发布于:2007-01-17 11:24
现在发现收到了SET_CONFIG的SETUP包了。00 09 01 00 00 00 00 00
我发现问题了,不知道对不对,还要再试过。 INIT EP的时候,要按照编程指南上面的顺序。先禁止,再设置长度,最后设置端点模式。 然后在收到SET_CONFIG的包之后,再把要用的端点使能。好像就可以了,呵呵 |
|
13楼#
发布于:2007-01-17 09:15
请问是指驱动读端点1,而设备写端点0吗?
好像不太可能,因为我的receive函数是等到EP2RX中断来了才执行的。 我的理解是这样的:EP2RX产生中断了,说明端点2已经收到数据了,把ACK发给主机了。 然后我就INDEX =4,然后就读dataport。 接着我给主机送一些数据,反映写下来的内容。 请问,主机发完5个SETUP包,然后就加载驱动,接着还要发一个SET_CONFIG的包吧? 我好像没有收到这个包。数据传输不正确跟这个很有关系吧? |
|
14楼#
发布于:2007-01-16 15:00
有可能是端点上下不匹配
驱动里读1,设备里写0, |
|
15楼#
发布于:2007-01-16 14:58
感谢楼主指点,正常初始化是是不是就没有GET_STATUS中断呢?
|
|
16楼#
发布于:2007-01-16 10:44
TO dqy32:
中断乱跑,可以只开bus&hs中断,要知道bus中断来了之后,会来一个hs中断,所以在处理bus中断的程序当中必须要处理hs中断,也就是重新初始化一些寄存器。 你自己仔细看看究竟收到的是什么标准命令吧,很有可能是你读寄存器的时间太快了。导致06没读出来,读成了00。 |
|
17楼#
发布于:2007-01-16 10:36
哈哈,谢谢jinghuiren大牛的回答。今天终于搞定枚举问题了,是我的程序有不合理的地方。所以USB供电和外电源供电导致一点点上电顺序不同,就导致程序跑飞了。
现在调试数据上下传的问题,我用DriverWizad自动生成的驱动。 在初始化的过程当中,我设置18H为CD21,只开0和2端点的中断,端点2设置为BULK型,并且使能。 在中断程序中,等待EP2RX中断的产生。然后去执行RECEIVE函数,就是将得到的数据从端点2的 DATA_PORT里面读出来。 现在的问题是,主机发送数据说TRANSFER 错误,Unrecognized error code。但是下位机还是可以 继续跑,只是数据不对。 我没有使用DMA功能,是不是要禁止一些寄存器? 这个问题有没有可能是驱动的问题? 谢谢 |
|
18楼#
发布于:2007-01-15 10:06
楼主你好,我这几天也在调试1581,跟你遇到的情况极其类似,先前是中断乱来,现在是只能收到GET_STATUS中断,从来也没有看到GET DESCRIPTION中断,这里该怎么调试啊,希望楼主不吝赐教。
|
|
19楼#
发布于:2007-01-15 09:19
干扰太大?软件问题?
再仔细查查 |
|
上一页
下一页