MSP430 USB 开发 – 超简单

以前用过EFM8,STM32等器件的USB开发,稍好点的比如STM32还带CubeMX,但是也只能实现单一设备,复合也要自己搞,再者,他生成就一定要绑定他自己的东西,推导自己原有工程去修改?相反,在MSP430上,我看到了更好的方法.

首先,想随便找个例子,比如MSP430Ware下面的这一个.

按照正常方法导入工程.

默认是以MSP430F5529做模板的,我用的就是EXP430-F5529LP,所以什么都不用改.直接编译后下载.

相应的数据包也已经抓到了.

这里要添加一个鼠标功能.找到这个工具.

比如添加2个串口,和3个HID,其中一个HID是自定义数据,另外是鼠标和键盘.

然后用生成功能,生成文件.(如果有串口设备,最好生成INF,怕老旧系统没直接支持)

生成文件里面,工程有用的是这些.

于是,这么复杂的复合设备就出来了.

看到源文件,这里接口是按顺序的,比如HID1就是鼠标,HID2是自定义设备.

我试着把主要代码改成鼠标发送.(下面是代码片)

typedef struct

{

    uint8_t buttons;

    uint8_t dX;

    uint8_t dY;

    uint8_t dZ;

} MOUSE_REPORT;



MOUSE_REPORT mouseReport = { 0, 0, 0, 0 };



mouseReport.buttons = 0x00;

mouseReport.dX = 0;

mouseReport.dY = 55;

mouseReport.dZ = 0;



USBHID_sendReport((void *)&mouseReport, HID1_INTFNUM);

while(!keySendComplete);

keySendComplete = FALSE;

这鼠标果然好用了.

串口同理可得,具体也可以参考下串口例子,另外,怎么判断是键盘传输完毕还是鼠标传输完毕呢,毕竟是不同端点的.

官方文件:usbEventHandling.c

这是唯一一个需要我们自己改写的官方文件,每一个函数都是被中断回调的,官方都有注释,我这里就简单的添加了如何实现2个端点独立判断发送完成标志,当然,还有一些其他东西比较特别,比如USBCDC_handleSetLineCoding这些,是CDC设备才有的,具体要了解,还要先学习一下USB(CDC协议).

另外,MSP430可能由于性能/市场定位原因,目前官方工具就支持4个不同设备类型,当然,一般也够用了.而Custom-HID,则需要对HID协议有一些了解.

《MSP430 USB 开发 – 超简单》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注