精华内容
下载资源
问答
  • 基于STM32f103的 USB 读卡器的实验
  • 学习STM32的USB功能使用
  • 使用设备是一种模拟键盘输入的读卡器设备,该设备可以直接在Windows下使用,在安卓系统下由于输入法的干扰,大多数无法直接使用。本安卓项目用于拦截该设备扫描内容,可以读出原始字节并转义为卡号,提供更好的兼容...
  • STM32的USB读卡器,亲测能用。内有详细的讲解文档,很好的学习资料。
  • 通过stm32f103 的usb接口读写SD卡,包含fat文件系统
  • winform程序,用于监听usb扫码枪或者usb读卡器。vs2015+winform。
  • 基于STM32的USB读卡器的设计.pdf
  • C# 明华读卡器读写完整Demo,下载即可运行 demo为M1卡的USB无驱方式,非RS232串口方式,下载前请注意!!! demo包含必须dll文件mwrf32.dll,在debug目录下
  • usb读卡器原理图

    2014-12-22 16:09:27
    usb 读卡器 原理图
  • android-usb-读卡器
  • USB读卡器程序

    2018-12-29 11:00:49
    这是一个USB读卡器程序,该程序应运行在STM32F103ZET6单片机上。
  • ARM构架Linux系统身份证阅读二次开发包,SDK开发包,支持USB接口免驱使用。 ///////////////////////////////////////////各卡片操作顺序////////////////////////////// 【身份证操作顺序】 读取证件 获取证件...
  • 摘要:ATMEL公司是51单片机生产厂家之一,该公司新推出的AT8xC5122系列微处理器可支持USB读卡器,并且具有两种封装形式,可以方便地应用于多种场合和仪器中。 关键词:单片机;USB读卡器;微控制器;AT8xC51221...
  • BL8810是一款USB 2.0读卡器控制器,采用高度集成的单芯片解决方案,旨在提供USB2.0和SD、SDHC、mini SD、Micro SD(T-Flash)接口规范之间的高速数据传输。
  • 例程,看到题目 你就知道啦 STM32 USB
  • PDF介绍了基于STM32的USB读卡器实现.有需要的可以下载。(基于 STM32 的 USB 读卡器的设计 黄亚萍 论文)
  • IC-USB读卡器开发包

    2018-12-29 15:36:47
    压缩包中包含完整的读卡器开发流程,包括动态库,包含各种语言的例程,值得学习
  • 本文主要介绍内嵌USB接口的单片机和EM4095设计USB接口ID读卡器,同时介绍一种新的解码技术。
  • 基于STM32f103的 USB 读卡器的实验
  • USB读卡器实验
  • 嵌入式Linux的USB读卡器驱动深入研究.pdf
  • 看了下淘宝和京东, 只要搜素"USB读卡器"冒出一大堆搜索结果, 具体产品我们不做介绍, 但是就这个读卡器的分类我们有必要从技术来分析一下, 因为很多开发人员也许都没整明白怎么回事, 因为大部分仅仅限于用SD卡, TF卡...

            最近研究SD卡/TF卡读卡器, 发现有很大的技术信息, 很多消费者并不关心, 作为技术控, 这个必须要研究清楚.

            看了下淘宝和京东, 只要搜素"USB读卡器"冒出一大堆搜索结果, 具体产品我们不做介绍, 但是就这个读卡器的分类我们有必要从技术来分析一下, 因为很多开发人员也许都没整明白怎么回事, 因为大部分仅仅限于用SD卡, TF卡存储资料或是读取资料而已, 其他并不是关心的对象.

            下面我们来看看U盘, USB读卡器, U盘读卡器到底啥区.

             第一, U盘大家好理解, 就是一个USB设备, 内部焊接了一颗Flash存储芯片, 走的是USB storage 类协议, 这是USB 标准规范的一个子类, USB mass storage规范是针对USB大容量存储设备的, 即我们可以理解为这个协议就是简单认为是U盘协议.

             第二, U盘读卡器, 这个就是一个USB设备, 如果不插入SD卡/TF卡其实就是一个卡套, 在不插入SD卡情况下, 插入电脑, 其实也可以被电脑识别, 只是没有盘符出现, 但是是可以被识别的, 其实这个USB的读卡器就是一个模拟U盘通信协议的卡套, 当插入SD/TF卡之后就可以在电脑上看到U盘的盘符和对应的总容量/剩余容量(注意图标是U盘的盘符), 可以进行正常的读写操作. 

             所以可以看出来U盘读卡器其实SD/TF卡->U盘的转换实现, 也就是说这种U盘SD卡读卡设备在插入SD卡后就可以当U盘使用了, 而且也是和U盘一样的通信协议, USB mass storage 协议. 同时这种读卡设备的内置芯片里面有固件存在, 而且固件是可以升级的, 一般芯片厂商有专用工具可以检测U盘读卡器的内部固件版本, 并提示是否需要升级. 

             既然是U盘协议, 那理论是就是当和U盘一样没啥区别, 这种解决方案是目前淘宝,京东卖的USB读卡器的主流方案, 即现在市面的USB读卡器都是基于U盘协议实现的, 所以我们正确称呼这种设备应该是U盘读卡器. 而且采用这种U盘读卡器可以制作操作系统的启动盘用于从U盘安装操作系统, 和普通U盘无异.

             U盘读卡器内部的主要的芯片解决方案是: RTS5301/5306E, GL3225/3226/3227/3233等, 这些芯片内部都需要运行一个固件, 固件主要实现了USB mass storage 协议和控制SD/MMC控制器的读写. 而且目前这些芯片大部分都是USB3.0/3.1接口协议, SD/TF卡接口支持SD4.0, USH-II接口规范等, 支持的标准都比较新. 

             第三: USB读卡器, 这个USB读卡器和上述第二部分描述的U盘读卡器是不同的, 是完全不同的东西. 首先这个USB读卡器不是走U盘Mass storage 协议, 所以这种设备或芯片就不是U盘类装置了, 那他是如何实现的呢? 

             在进一步阐述之前, 我们先提一下笔记本自带的SD卡插槽, 这里以联想ThinkPad为例, 联想的ThinkPad笔记本目前都采用Realtek的RTS5240/5260一类(更早的型号有RTS5227/5229)的PCIE转SD/MMC/SDHC/SDXC芯片, 这类芯片是相当于基于PCIE的SD/MMC/SDHC/SDXC控制器, 当TF插入时由扫卡行为触发然后挂在为MMC设备, 最后MMC设备映射成盘符, 此时不管是Windows系统还是Ubuntu 系统, 在操作系统界面都可以看到一个类似SD卡的图标符号, 注意这个和第二部U盘读卡器的U盘符号不同, 说明系统识别到的是SD卡, 真正的SD卡, 不是U盘.  

             接下来我们接着说USB读卡器, 其实就是和PCIE的类似, SD/TF卡插入到这种USB读卡器, 在电脑上首先加载的是USB读卡器芯片的驱动, 而芯片的驱动和操作系统的MMC系统的驱动建立适配关系, 然后调用操作系统的扫卡API函数执行扫卡, 当然所有的SD/MMC的CMD指令最终是在USB读卡器的芯片驱动通过USB通信发送到芯片, 芯片再由硬件去解析CMD并完成对SD卡的读写控制, 也就是说这类芯片内部没有固件, 是纯硬件实现的, 它就是一个USB<->MMC/SD/SDXC/SDHC的协议转换芯片, USB总线通信也不需要Mass storage协议, 走普通的芯片厂商的固定标准普通USB协议即可完成通信, 所有的SD/MMC读写操作和USB交互最终都是在USB->MMC/SD转换芯片的驱动实现. 所以整个操作系统是在真正的操作SD卡/TF卡, 而不是当作U盘处理, 所以这类芯片制作的USB读卡器不是U盘协议, 当然也无法被用于系统安装盘之类的设备, 因为不具备U盘协议, 而且只有在系统正常启动和加载对应的设备驱动后, SD/TF/MMC卡才能被正确识别. 

            这种USB读卡设备主要的芯片也不多, 有VUB300和Realtek的RTS5129/5139/5179/5170等. Realtek这种芯片都是USB2.0协议接口, 很多都是7-8年的产品, 现在很少或是基本没有推广, 而PCIE-SD/MMC的主控芯片都是在笔记本上使用. 

            综上所述, 第一种U盘和第二种U盘读卡器是目前的市场主流, 支持USB3.0/3.1. 支持SD4.0/UHS-I/UHS-II等更高标准. 而普通USB读卡器芯片(非U盘协议), 已经基本逐步被历史淘汰, 市场上也基本很难或者几乎不可能买到此类读卡器.

            今天分享到此....

    展开全文
  • 德卡读卡器说明

    2019-01-18 14:21:26
    使用USB读卡器时,不能先接读卡器,而是应该先安装USB驱动,然后再接上USB读卡器,这时系统会自动找到设备的。 5 IC_InitType 此函数不是测卡函数,它没有测卡功能,它的作用是告诉读卡器将要操作的卡型号而已...
  • Android系统USB读卡器

    千次阅读 2020-03-23 07:26:30
    Android系统USB读卡器

    1 U盘通用知识
    1.1 Windows分区知识
    因为保存主分区信息的MBR(Master Boot Record)只能容纳4个分区信息,也就是说只能有4个主分区。如果你想要更多的分区,只能将其中的一个主分区再划分,再划分出来的分区叫做逻辑分区,被划分的主分区又叫扩展分区,逻辑分区信息是保存在EBR(Extended Boot Record)里的。Linux系统中规定了主分区号为sda1-sda4或者hda1-hda4,而逻辑分区只能从sda5开始。

    Q:U盘被识别为/dev/sda4,而不是sda1?
    A:因为U盘的这个分区写在分区表(MBR DPT,Disk Partition Table)的第四项所以是sda4(DPT每个entry的第一个字节为引导标志,0x80表示活动分区,0x00表示非活动分区),可以用命令重新写到第一项。

    sudo sfdisk -d /dev/sda > sda_table
    gedit sda_table
    sudo sfdisk /dev/sda < sda_table

    1.2 FAT32分配单元大小
    FAT32分配单元大小 - 簇的大小,譬如16KB,命令chkdsk f:\

    1.3 LUN
    LUN - 表示一块硬盘,可以是物理上的,也可以是逻辑上,譬如Android Gadget MSG的一个mmcblk0p1分区,命令lsscsi查看
    lshw
    lsscsi - 返回值Host:Controller:Target:LUN
    lscpu
    lsusb
    lsblk

    SCSI Internal pinout
    http://pinoutdiagram.com/scsi-internal-pinout/

    1.4 Linux内核SCSI硬盘盘符分配
    磁盘槽位和盘符绑定方案
    http://www.voidcn.com/article/p-dvjobuge-ga.html

    2 Android OTG支持USB读卡器
    2.1 基本原理
    我们知道,三星Android手机将USB读卡器通过OTG线插入Micro USB插口后,插拔读卡器里的SD卡,文件管理器也能够识别卡的插拔;而很多手机的OTG连上USB读卡器也来插拔SD卡,会发现文件管理器无法加载SD卡。而将USB读卡器放到Windows上或者桌面Linux上,我们发现插拔读卡器里的SD卡也是有效的。

    究其原因是Android的用户空间或者内核空间没有处理好SCSI 的TUR(Test Unit Ready)命令。

    2.2 SCSI Host注册使用到的函数
    scsi_host_alloc()
    scsi_add_host()
    scsi_scan_host() - 执行INQUIRY命令,每扫描到一个lun(函数scsi_probe_and_add_lun())就创建一个struct scsi_device(譬如U盘一般只有一个lun,而读卡器和UFS可能有多个lun;每个struct scsi_device创建一个disk,可能有多个分区),与sd_probe()匹配。

    2.3 TUR执行流程
    2.3.1 methodology
    drivers/usb/storage/scsiglue.c
    queuecommand_lck()
    add dump_stack() to find who calls TUR.

    2.3.2 enable TUR polling
    echo 2000 > \
    /sys/module/block/parameters/events_dfl_poll_msecs

    dfl means default.

    2.3.3 Construct TUR Fail CDB
    If the device is not ready, the bCSWStatus field in CSW is set to 0x01 (command failed). When device reports 00h in the bCSWStatus field in CSW, which indicates that media is ready.

    // srb->sense_buffer
    unsigned char
    usb_stor_sense_media_notpresent[18] = {
        [0] = 0x70,
        [2] = 2,           /* Sense Key */
        [7] = 0x0a,
        [12] = 0x3a,   /* ASC */
        [13] = 0,         /* ASCQ */
    };

    2.4 REQUEST_SENSE auto_sense
    USB host MSC(transport.c)每发送一个命令后,都会检测设备返回的CSW的状态值是否为0(Good Status),如果不为0,则USB host MSC马上发送REQUEST_SENSE命令,获取18字节的出错信息,并保存在srb->sense_buffer中供SCSI层分析。

    drivers/usb/storage/transport.c
    usb_stor_invoke_transport()
    srb->sense_buffer

    2.5 TF卡SPI模式
    剪块透明胶带,粘住TF卡第1个脚(DAT2),插入USB读卡器,TF卡进入SPI模式。

    2.6 showcase
    sg v3: /dev/block/sda
    sg v4: /dev/0:0:0:0

    scsi Inquiry example

    3 Abbreviations
    ARC:Argonant RISC Core
    AT91SAM9260:SAM means Smart ARM-based Microcontroller
    ATMEL SAMBA:ATMEL Smart ARM-based Microcontroller Boot Assistant
    MBR:Main Boot Record
    DBR:DOS Boot Record
    EBR:Extended Boot Record
    bdi:backing device info - 脏页写回核心结构;文件系统page cache,使用struct address_space_operations(每个文件系统都有这个结构体,譬如 fat_aops)
    CCGP:Windows USB Common Class Generic Parent,Linux内核类似的驱动就是usb_generic_driver(generic.c)
    CCGP MI_:Common Class Generic Parent Multi Interface
    DWC2:Design Ware Controller 2,Apple的嵌入式设备,包括iPad和iPhone都是使用的DWC2
    IDA & IDR:Identification,IDR机制在Linux内核中指的是整数ID管理机制。实质上来讲,这就是一种将一个整数ID号和一个指针关联在一起的机制。IDA是用IDR来实现的ID分配机制,与IDR的区别是IDA仅仅分配与管理ID,并不将ID与指针相关联。
    ISP1161:Philips' Integrated host Solution Pairs 1161,“Firms introduce USB host controllers”,https://www.eetimes.com/document.asp?doc_id=1290054
    Quirks:the attributes of a device that are considered to be noncompliant with expected operation
    RCU:Read-Copy Update,RCU支持一个更新者和多个读者同时访问。通过维护对象的多个版本,RCU保证读者看到的对象是前后一致的,并且保证在所有之前已存在的读者离开临界区时,这些版本才会被释放。
    SL811HS:Cypress/ScanLogic 811 Host/Slave,性能上与ISP1161(Integrated host Solution Pairs 1161)相当
    TDI:TransDimension Inc.,该公司首先发明了将TT集成到EHCI RootHub中的方法,这样对于嵌入式系统来说,就省去了OHCI/UHCI的硬件,同时降低了成本,作为对该公司的纪念,Linux内核定义了宏ehci_is_TDI(ehci);产品UHC124表示USB Host Controller;收购了ARC USB技术;现已被chipidea收购,chipidea又被mips收购
    TLV:TI Low Value,高性价比
    TPS:TI Performance Solution
    TT:Transaction Translator(事务转换器,将USB2.0的包转换成USB1.1的包)
    TUR:Test Unit Ready(类似心跳信号),sd_spinup_disk()执行该命令,底层排队函数usb_stor_host_template.queuecommand()和ufshcd_queuecommand()。Linux工具sg_turs(SCSI Generic,隶属于sg3_utils)用来手工发送TUR命令
    USB3 BULK Stream ID:对应到SCSI Tag或者SATA Tag
    USB BH reset:Bigger Hammer or Brad Hosler,表示warm reset;you may be confused why the USB 3.0 spec calls the same type of reset "warm reset" in some places and "BH reset" in other places. "BH" reset is supposed to stand for "Big Hammer" reset, but it also stands for "Brad Hosler". Brad died shortly after the USB 3.0 bus specification was started, and they decided to name the reset after him. The suggestion was made shortly before the spec was finalized, so the wording is a bit inconsistent.
    USB Host枚举时-71错误码可能原因:DP和DM走线太长导致眼图差;DP和DM接反了
    W-LUNs:UFS Well Known Logical Units

    展开全文
  • STM32实现的USB读卡器

    2012-12-11 09:35:19
    STM32实现的USB读卡器,配有原理图,代码完整清晰,注视详细,是学习嵌入式高级编程的必备实例,是学习USB通信,SD卡操作,STM32进阶学习的经典之作。
  • USB接口ID读卡器是射频识别RFID(Radio Frequency Identification)在125 kHz的具体应用,适用于网吧管理、会员系统、考勤消费发卡器、身份识别前端等。
  • 软件介绍: GC482外置式USB IC卡读写器驱动安装说明:将下载的驱动解压,双击里面的AUTORUN.BAT,然后再弹出的Install Driver窗口中,点击Install,安装后...请先安装驱动后,再连接读卡器,否则会导致安装不成功。
  • usb智能读卡器驱动,usb_token32驱动,支持ePassNG证书登陆等。 智能卡驱动,ePass Token。
  • 神思二代读卡器DEMO,C++版本

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,271
精华内容 3,308
关键字:

usb读卡器怎么使用