关于MSP430F55xx的USB HID与上位机不能收发数据的问题

2019-03-24 10:10发布

我现在的问题是现在板子可以与TI的msp430ware的USB HID Demo的MSP430 HID USB Application通讯成功, 无标题2.png

图片中的软件是在CCS中的附带的一个测试软件,发给用户的话,总不能让每台上面安装CCS吧!

无标题9.png

在网上下载的Java_HID_Demo如附件,我打开来是这样的,没有.exe问件,也就是无从调用连接与所提供的库函数。

无标题10.png
但与其他软件(这款软件是在网上下载的,并且已发布,不是自己编写,我会给你加在在附件中)可以识别我的USB设备,但发送SetupPacket没反应,更不可能收发数据(根本接收不到USB底层数据)

无标题3.png 无标题8.png

我还用在你们的官网买的两款5529的开发板试了,一样的情况:

无标题4.png 无标题5.png

下面是我自己读取HID1接受缓冲X/Y区基址寄存器的代码,用MSP430 HID USB Application,基址寄存器stUsbHandle[0].oep_X/Y_Buffer中的数据改变,
其他软件发送数据连中断都不会进,基址寄存器stUsbHandle[0].oep_X/Y_Buffer中的数据不会改变,可见接受HOST数据包时,底层是收不到的;
BYTE * pEP1;
       BYTE i;
        pEP1=(BYTE*)stUsbHandle[0].oep_X_Buffer;
        for(i=0;i<*(pEP1+1);i++)//EP_MAX_PACKET_SIZE
        {
          Zigbee_TXbuf=*pEP1;//(pEP1+2)
          pEP1++;
        }
        pEP1=(BYTE*)stUsbHandle[0].oep_Y_Buffer;
        for(i=0;i<*(pEP1+1);i++)//EP_MAX_PACKET_SIZE
        {
          Zigbee_RXbuf=*pEP1;//(pEP1+2);
          pEP1++;
        }
           }/**/



我今天在Debug模式下试了下,上电后换用其他任何软件发送正确的VID:0x2047,PID:0x0301,不能实现正常的Setup事务处理与传输(连#pragma vector=USB_UBM_VECTOR中断都不会进),

只有你们的MSP430 HID USB Application可以,可见MSP430f5510单片机自带USB功能通信协议和计算机底层USB通信协议冲突,USB HID Demo软件源代码中应该是有两者协议的管道。

输入/出端点0的初始化配置如下:

#define USBIEPCNF_0_      (0x0920u)    /* USB Input endpoint_0: Configuration */
DEFC(   USBIEPCNF_0     , USBIEPCNF_0_)
#define USBIEPCNT_0_      (0x0921u)    /* USB Input endpoint_0: Byte Count */
DEFC(   USBIEPCNT_0     , USBIEPCNT_0_)
#define USBOEPCNF_0_      (0x0922u)    /* USB Output endpoint_0: Configuration */
DEFC(   USBOEPCNF_0     , USBOEPCNF_0_)
#define USBOEPCNT_0_      (0x0923u)    /* USB Output endpoint_0: byte count */
DEFC(   USBOEPCNT_0     , USBOEPCNT_0_)


/* Set settings for EP0 */

    //NAK both 0 endpoints and enable endpoint 0 interrupt
USBIEPCNF_0 = 0x04+0x80+0x08;


USBOEPCNF_0 = 0x8C;

USBIEPCNT_0 = 0x80;

USBOEPCNT_0 = 0x80;

输入/出端点1的初始化配置如下:
#define USBIEPCNF_1_         (0x23C8u)    /* Input Endpoint_1: Configuration */
DEFC(   USBIEPCNF_1        , USBIEPCNF_1_)
#define USBOEPCNF_1_         (0x2388u)    /* Output Endpoint_1: Configuration */
DEFC(   USBOEPCNF_1        , USBOEPCNF_1_)
/* Set settings for IEP1 */
USBIEPCNF_1 =  EPCNF_USBIE | EPCNF_UBME | EPCNF_DBUF;//0x23C8
    USBIEPBBAX_1 = 0x10;
    USBIEPBBAY_1 = 0x18;
    USBIEPBCTX_1 = 0x80;
    USBIEPBCTY_1 = 0x80;  
    USBIEPSIZXY_1 = 0x40;
/* Set settings for OEP1 */   
    USBOEPCNF_1 =  EPCNF_USBIE | EPCNF_UBME | EPCNF_DBUF;//0x2388
    USBOEPBBAX_1 = 0x00;
    USBOEPBBAY_1 = 0x08;
    USBOEPBCTX_1 = 0x00;
    USBOEPBCTY_1 = 0x00;
    USBOEPSIZXY_1 = 0x40;










此帖出自小平头技术问答
0条回答

一周热门 更多>

相关问题

    相关文章