打印

[原创]不用单片机开发而实现单片机的功能

[复制链接]
1866|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
schoolboy|  楼主 | 2008-4-21 11:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

市面上带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
 

相关帖子

沙发
mxinfa| | 2008-4-21 16:24 | 只看该作者

放到taobao上吧

使用特权

评论回复
板凳
yewuyi| | 2008-4-21 16:53 | 只看该作者

南京沁恒~~

好象比较贵……

使用特权

评论回复
地板
aolin| | 2008-4-21 18:19 | 只看该作者

通过USB控制IO是非实时的

通过USB控制IO与单片机自己控制IO完全是两回事:
单片机控制IO口的延迟一般不会超过2US,而PC通过USB控制IO,从PC断软件设定IO口的值到其真正反映到IO口上,至少要1MS的延迟!

使用特权

评论回复
5
mohanwei| | 2008-4-21 18:55 | 只看该作者

驱动做得好就可以。直接操作并口速度也不快……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

25

帖子

0

粉丝