一直想充分利用LP1343的USB Device接口作为初期开发时的人机接口。
如果有感兴趣的朋友可以下载原代码研究。所有程序基于:LPCXpresso v3.3 和VC++ 6.0。
同时我们也提供编译好的WINDOWS程序,方便没有VC++编译器的朋友。
LPCXpresso 有两个USB HID的例子:“usbhid”和“usbhid-rom”,usbhid-rom利用了引导ROM包含的USB驱动程序,简化了我们的USB应用开发。
为了更快的介入到USB开发,这里以usbhid-rom为基础,加入LED闪烁、AD5通道转换。PC机通过USB接口控制LED闪烁速度,并不断读取AD5通道转换结果。
为了完成以上工作,需要引出LPC1343的USB接口,电路很简单,里面的1.5k电阻我一时找不到,用了2K的。
如图
上图我们只是简单的把D+通过一个电阻接到+3.3V。
元件不多,可以直接焊到开发板。下面是焊好的开发板:
后面的附件里代码包中有完整的范例。
1)将指针映射到片上驱动程序表中:
ROM ** rom = (ROM **)0x1fff1ff8;
2)使能32位定时器1(CT32B1)和IOCONFIG模块:
LPC_SYSCON->SYSAHBCLKCTRL |= (EN_TIMER32_1 | EN_IOCON);
3)初始化USB时钟和引脚:
(*rom)->pUSBD->init_clk_pins();
4)设置设备类型和信息:
USB_DEV_INFO DeviceInfo;
HID_DEVICE_INFO HidDevInfo;
HidDevInfo.idVendor = USB_VENDOR_ID;
HidDevInfo.idProduct = USB_PROD_ID;
HidDevInfo.bcdDevice = USB_DEVICE;
HidDevInfo.StrDescPtr = (uint32_t)&USB_StringDescriptor[0];
HidDevInfo.InReportCount = 1;
HidDevInfo.OutReportCount = 1;
HidDevInfo.SampleInterval = 0x20;
HidDevInfo.InReport = GetInReport;
HidDevInfo.OutReport = SetOutReport;
MCU的代码限于篇幅就不展开说了,自己看附件吧。
需要特别指出的是:我们只是简单的把D+通过一个电阻接到+3.3V。所以开发板必须先通电运行才能让PC机找到USB设备(也就是原开发板的USB线先通电让LPC1343程序运行起来,然后再把我们DIY的USB接口连到PC机),否则PC机将报告未知的USB设备。这时需要你重新拔出DIY的USB线,然后再插上就可以了。
现在运行PC机程序:USB_HID_TEST
点Find按纽,找到我们的USB设备
上面的link 1就是我们的USB设备,选择。
右侧显示我们的控制窗口。
调整滑块位置,控制LED闪烁速度
同时AD5通道的转换结果,你可以把AD5短路到GND,看结果是否为零。
USB_HID_TEST程序以及原代码见附件
[
本帖最后由 zhdphao 于 2010-5-30 14:41 编辑 ]