再发一个有技术含量的帖子!
================================== CYPRESS提供的usbuart用户模块中有问题,使用XP+SP3的用户需要注意了。
下面是我在10月28日向CYPRESS公司发出的请求支持的帖子。经过了近20天的折腾,不断的沟通,他们终于找到问题所在,但解决办法还在等待之中。
------------------10月28日发出的询问 Created at: 10/28/2008 Part Number: 64215 Product: PSoC Mixed-Signal Controllers - PSoC Mixed-Signal Array > PSoC Subject: Problem with the USBUART Description: I am having a problem with the USBUART.
Test code is the Sample Code from USBUART Datasheet:
BYTE Len; BYTE pData[32]; void main() { M8C_EnableGInt; //Enable Global Interrupts USBUART_Start(USBUART_5V_OPERATION); //Start USBUART 5V operation while(!USBUART_Init()); //Wait for Device to initialize while(1) { Len = USBUART_bGetRxCount(); //Get count of ready data if (Len) { USBUART_ReadAll(pData); //Read all data rom RX while (!USBUART_bTxIsReady()); //If TX is ready USBUART_Write(pData, Len); //Echo } } }
When PC send 8/16/24/32 bytes data to PSOC,the 64215 only works one time,then dos not work. But send the another numbers byte data, it works well.
---------------------11月14日的答复,终于找到了原因,但解决办法还在等待中。 Cypress Response | 11/14/2008 06:17 AM | Web
Hello Ma Chao,
I'm author of USBUART user module.
This is defect appears on XP SP3 only. USBUART works fine on XP with SP2 and prior SP. Failure reason: Starting from SP3 standard Windows driver (cdc.sys) send 0-length CDC packet after 8bytes or 16bytes or 24bytes or 32bytes packet is sent. USBUART can't able to correct resolve 0-length packet. I'll try to provide you hotfix as soon as possible.
Regards, Level II support
=============================================================== 经过19天的来回,Cypress的工程师终于找到了问题的原因,但解决的方法还没有,他们要修改USBUART了。
原因在于USBUART不能处理0长度的CDC数据包。而XP(SP3)发送完8/16/24/32等8的陪数数据包后,跟着发送了一个0长度的数据包。这样UASUART就“死”掉了。Cypress工程师把责任归到了XP的SP3了。
收到答复后,我马上在我的台式PC(正好是XP+SP2)上进行了测试。的确在SP2下是没有问题的。
不管怎样,Cypress不能让微软改动XP吧,只能他们自己更新USBUART了。怪他们自己没有经过全面的测试了。
要做到完美是不容易的。Cypress的PSoC还需要努力和完善。
|