在线时间0 小时
UID116571
注册时间2009-3-17
NXP金币0
该用户从未签到
新手上路

- 积分
- 7703
- 最后登录
- 1970-1-1
|
hi,shenli cutworth
我最近玩mqx usb stack的时候遇到些问题,有些困惑,特请教二位。
1. mcf52259的usb otg模块的OTG_STAT寄存器,里面的bit7是"indicate the current state of the ID pin on the USB connector"我的疑惑是那种mini usb接口有5个pin,其中的ID pin的状态怎么与这个寄存器中的bit7联系起来?因为52259并没有专用的引脚与这个ID pin连接。我看M52259EVB是讲usb connector的这个IDpin连接到52259的CTS1上的,然而cts1并不是一个专门用于ID 状态检测的引脚,我的理解是,其实我可以把这个CTS1换成任意其他一个引脚的,随便用一个GPIO连接到ID PIN应该也是没问题的。那么如果是这样,cts1连接到ID PIN,这个怎么与52259内部的OTG_STAT寄存器的bit7关联起来的?
2. 我测试了MQXusb stack下面的几个example,能正常work的是device下的hid, host下面的massstroge。device下的cdc的virtual com不能正常work,host下的hid mouse不能正常工作。我碰到的问题是:
所有的example运行后,usb都能检测到设备,枚举什么的都看起来正常,比如virtual com那个example,我把板子插到PC,确实多了个串口,又比如,host的hid mouse example,插上鼠标后,通过串口调试助手可以看到mouse attach等信息。但问题是接下来就出错了。分别说明:
A。 virtual com这个example:
我试着用串口调试助手工具,往板子发数据,没有收到任何返回的数据,如果尝试改变这个虚拟串口的设置(baudrate),则串口调试助手死。跟进去发现。把板子插上pc后,会收到两个event,分别是USB_APP_CDC_CARRIER_DEACTIVATED 和USB_APP_CDC_DTE_DEACTIVATED ,最终会在条用void USB_Notif_Callback(uint_8 event_type,void* val,pointer arg)
中处理,但是因为从来没收到USB_APP_CDC_DTE_ACTIVATED,所以start_transactions永远等于FALSE,这导致main_task里面调用的void TestApp_Init(void)函数里面最后干活的这段代码:
while (TRUE)
{
/* call the periodic task function */
USB_CDC_Periodic_Task();
/*check whether enumeration is complete or not */
if((start_app==TRUE) && (start_transactions==TRUE))
{
Virtual_Com_App();
}
}/* Endwhile */
永远不会被调用,因为start_transactions!=TRUE,所以Virtual_Com_App(); 永远不会调用。
不知道这可能是什么原因。
注:我用的板子不是EVB,是自己做的板子,我这个板子上并没有用那种小的mini usb connector,而是用了两个普通的大的usb A和usb B座子,分别用作host和device接口。我也没有像evb板子上那样,弄个mic2026控制作为host时候的5V输出,我是直接把它连接到电源上去的。就是说只要查到usb a座子上,外部的设备就会被供电。
同样,因为用的是大的usb connector,它们本来就4个pin,没有ID pin,所以我也省掉了cts1与 ID pin的连接。
|
|