您现在的位置: USB开发网 > USB开源项目 > Easy USB 51 Programer Plus
- Easy USB 51 Programer Plus

让Windows找到我们的USB设备

------分隔线----------------------------

  电路板焊接好后,先根据《硬件测试》一节确认硬件没有问题,从这一节开始来学习怎么编写设备固件。

  在前面的章节中我们说过,学习USB编程的方法并不建议从头开始编写USB固件驱动,一般USB接口芯片(或带USB控制器的单片机)厂商都提供了范例代码,在此代码的基础上修改就行了。

  本开源项目所使用的USB接口芯片是PDIUSBD12,为NXP公司生产,NXP公司此接口芯片提供有范例代码,而国内知名单片机推广商周立公是最早代理PDIUSBD12的商家,周立公对原厂范例进行了修改,添加了许多中文注释,我们使用起来将更加方便,所以本实例选用周立公版落伍代码为基础。

  本节内容是修改范例代码,使其在此开源项目的板子上跑起来,让Windows能找到我们的USB设备。 

PDIUSBD12固件范例

  这个范例是个完整的Keil C工程范例,大家使用是可以直接在工程的基础上修改,也可以将除了main.c以外的C和文件的H文件复制自己的工程中,下面简单介绍一下各文件的功能:

  • D12Config.h:硬件配置头文件,单片机IO引脚与D12有定义也在此文件中定义
  • Descriptor.c和Descriptor.h:USB协议中有关描述符的配置都在这两个文件中,实现不同USB设备时主要修改这两个文件
  • Chap_9.c和Chap_9.h:主要实现USB各种请求服务功能
  • D12HAL.c和D12HAL.h:初始化D12、复位D12、读写D12
  • D12Driver.c和D12Driver.h:D12中断服务
  • D12CI.c和D12CI.h:与USB接口相关的一些功能

  使用此范例,首先得修改D12Config.h文件中有关IO口的定义,使其定义与自己的电路相一致,修改内容如下:

PDIUSBD12范例修改-修改IO引脚定义
 

由于我们不需要DMA模式,所以修改D12HAL.C中相关内容,修改如下:

PDIUSBD12范例修改-修改DMA模式1
 
PDIUSBD12范例修改-修改DMA模式2
 
PDIUSBD12范例修改-修改DMA模式3
 

  修改好后,编译,烧录,将电路板插入主机,看看是不是提示发现新硬件。其实只要能正确复位D12主机就能发现新硬件,复位D12时会控制D12的1.5K上拉电阻全能,此时主机就能发现USB端口有设备插入,这一原理可以参考USB开发网另一篇文章《搭个简单电路验证USB主机是如何检测USB设备的插入和拨出动作的》。

  如果修改正确的话,LED应该灯会闪烁几下。

修改后的PDIUSBD12固件程序

判断单片机与D12连接是否正确的方法

1)、使用模式设置命令(0xF3)去改变D12第13脚的输出频率,如果可以改变,证明主控芯片向D12发送命令正确。
2)、使用读取ID命令(0xFD)去读,读回两个字节的內容,第一个字节应为0x12,第二个字节应为0x10。如果正确,则表明D12向单片机发送数据没有问题。

以上两步都通过了的话,证明硬件连接应该没有问题了。

------分隔线----------------------------
联系我们
  • Q Q: 1148374829 点击这里给我发消息
  • 旺旺:jhoneqhsieh 点击这里给我发消息
  • 电话:(0)15923141204
  • 淘宝网店