市面上带USB接口的单片机比比皆是,但是这些芯片对于产品开发者来说,都要面临三个关卡。 一是需要在单片机上编写相应的程序,同时要具备这样的前提:不仅要熟悉该单片机的脾气(如果是汇编指令则更费时费力),而且要也要懂USB编程相关的协议。 二是在PC端编写的应用程序是以USB通信为基础的,所以开发者必须要熟悉USB编程的相关协议和知识,而USB的协议是非常庞杂的。 三是单片机硬件搭建的时间和资金成本。不仅要设计和焊接单片机的开发板,还需要购买该单片机的仿真器、烧录器。如果是OTP型的单片机,则更加麻烦。 而EasyUSB正是为解决上述关卡而产生的。即不需要写单片机程序,不需要熟悉USB编程知识和协议,不需要购买单片机开发的相关设备等。 它是由一个国产USB专用芯片做成的模块+PC机上完整的应用程序(可二次开发的C++语言源代码)组成的开发套件。有了它,在你需要做一个USB产品开发时,所有要做的就是在PC上修改源代码、调用几个函数读写I/O口。而且该专用芯片的批量价格也是相当便宜。芯片框图如下:
https://bbs.21ic.com/upfiles/img/20076/20076611385102.jpg 关于此芯片的详细资料,可以去原厂网站www.wch.cn搜CH341。它是一款USB转并口、串口、SPI、IIC等接口的芯片,PC端不是虚拟的串口,而是真实的I/O地址。EasyUSB模块就是应用它成一个实用的模块,同时打包并简化了软件(你只要修改二次开发包源码中的两个函数的调用参数)。 二次开发包的下载,详情请登陆http://www.schoolboy.com.cn/list.asp?ProdId=0001,开发包编译运行如下图:
https://bbs.21ic.com/upfiles/img/20076/20076611403342.jpg 源代码中的函数说明: void EasyUSB_Set8LED(BYTE Data); 功能:设置输出J1的D0~D7的电平。 参数:Data的bit0~bit7分别对应于D0~D7。bit0=0,D0引脚则为低电平,LED1则亮。D0~D7刚好对应于LED1~LED8。 BYTE EasyUSB_GetInput(); 功能:获得输入引脚的状态。 返回值:bit0~bit3分别对应于Key1~Key4。bit0=0,外部引脚为低电平,表明Key1按键按下了。其中,Key3也是中断引脚,上升沿有效。 -------------------------------------------------------------------------- CH340,CH341:USB转串口,USB转并口、转打印口、转IIC、转SPI 应用方案的详情在www.schoolboy.com.cn |