打印
[USB接口]

USB刷卡器的设计代码

[复制链接]
1825|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 骑猪看夕阳 于 2016-10-19 17:36 编辑

       这个帖子基本是一个知识普及贴,介绍一下刷卡器这个产品,会从产品类型、设计方案和参考例程几方面做简单的介绍。想了解的朋友可继续,大神请忽略。
       刷卡器主要是使用在适合会员刷卡消费的场合,比如理发店、美食城、商场等等,也有用于授权、记名系统的,比如门禁系统、考勤系统等。按照卡的类型不同,刷卡器可以分为:接触式刷卡器和非接触式刷卡器,接触式刷卡器又分为磁条刷卡器和芯片卡刷卡器。非接触式刷卡器主要是指射频刷卡器,频率有125khz和13.56MHZ等等。
       按照和电脑连接的接口类型分为:串口刷卡器和USB口刷卡器。因为现在大部分电脑已经取消了串口,所以现在的刷卡器基本都是USB刷卡器,根据USB类型的不同又分为:1、USB虚拟串口模式 2、模拟USB键盘模式 3、HID类设备模式,这三种模式有什么区**面会再说明一下。
设计方案:
       刷卡器的设计一般都是一颗主控单片机(通常是8位单片机)和一颗负责读卡的芯片,有读磁条的也有读射频卡的。当然为了节约成本有的读磁条的直接使用阻容电路来实现,无需专用芯片。常用的单片机有STC单片机,常用的读卡芯片有FM1702、RC522等,如果是要做USB接口的刷卡器还要增加一颗USB接口的芯片,比如CH340和CH372等等。不过随着单片机技术的不断发展,现在都是直接使用带USB功能的单片机来把USB接口电路一起做了,做到整合性更好。
USB刷卡器的接口类型:
       ①USB HID类设备:此模式类似于鼠标键盘,电脑上无需安装驱动,只需要配合上位机软件就可以接受刷卡器识别到的刷卡信息。早期做HID类设备的USB接口芯片有MA101或CH9326等等。
      ②USB虚拟串口类设备:此模式下电脑需要安装驱动程序,USB刷卡器插到电脑上电脑识别为一个串口设备,优点是直接兼容之前的上位机软件,缺点是要安装芯片驱动,这种方式采用的USB芯片的典型代表是PL2303和CH340。
      ③USB虚拟键盘:此模式使用非常方便,电脑上不需要安装驱动,USB刷卡器插在电脑上直接识别为USB键盘,每刷一张卡,刷卡信息会直接输入到鼠标的光标处,类似键盘输入功能,已经越来越多的刷卡器使用这种模式。这种模式芯片的典型代表是CH9328芯片。

刷卡器设计程序:
        以下程序基于USB单片机CH558开发,刷卡芯片采用恩智浦的RC522芯片,是非接触式刷卡器。CH558是一颗主频56MHZ的8位增强型USB单片机,4K RAM,32K FLASH,双串口,支持SPI和8路11位ADC,最重要的是带USB DEVICE接口,比较适合刷卡器产品的开发。
软件的设计流程如下:
        实现PC如何通过USB接口向IC卡写入和读取数据,程序采用基于Keil C51的C语言编写,可分成多个模块使用模块化子程序设计。主程序流程如下:
        (1)初始化。系统启动时对MCU和编解码芯片以及各种接口的初始化,设置USB口工作模式,然后进入系统等待状态。这里需要注意的是读写卡芯片的初始化,复位后,一般先关闭天线再打开,然后设置模式。
        (2)寻卡,普通非接触式读卡器寻卡距离在10cm以内,找到卡返回2字节卡类型;
        (3)防冲突,返回4个字节卡唯一序列号加4字节序列号异或校验值;
        (4)选卡,返回1字节卡容量码;
        (5)验证秘钥;
        (6)前四步都过了以后才能按块号对IC卡进行读写操作。
        (7)通过USB口把数据传给上位机,一般模拟成HID设备,免驱。
根据需求不同USB支持三种工作模式:1、USB虚拟串口  2、HID免驱类 3、键盘值上传模式。
主程序代码见附件。 USB刷卡器开发代码.zip (10.27 KB)




相关帖子

沙发
insignal| | 2016-10-20 09:02 | 只看该作者
9328还需要外置晶体

试试我们的UI011  
http://item.taobao.com/item.htm?id=14862854690
无需晶体,只需两颗陶瓷电容
有低速、全速
支持3.3V、5.0V电平
命令协议超级简单
能支持windows、linux、安卓平板手机
如果选UI017  还能支持多媒体键 比如音量控制键
http://item.taobao.com/item.htm?id=520020899297

使用特权

评论回复
板凳
骑猪看夕阳|  楼主 | 2016-10-20 09:11 | 只看该作者
insignal 发表于 2016-10-20 09:02
9328还需要外置晶体

试试我们的UI011  

CH9328好像也不要晶振

使用特权

评论回复
地板
pang7| | 2016-10-21 10:50 | 只看该作者
这种教学帖必须顶 感谢楼主

使用特权

评论回复
5
946098169| | 2016-12-13 13:34 | 只看该作者

使用特权

评论回复
6
L14133| | 2017-7-11 10:29 | 只看该作者
代码不全啊

使用特权

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

本版积分规则

12

主题

131

帖子

6

粉丝