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

[复制链接]
2687|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的延迟!
mohanwei 发表于 2008-4-21 18:55 | 显示全部楼层

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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

25

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部