主机与射频读卡器的I制造技术

技术编号:18403667 阅读:30 留言:0更新日期:2018-07-08 22:03
本发明专利技术涉及一种主机与射频读卡器的I2C通信方法和系统,该方法包括:发送命令至射频读卡器,检测是否接收到射频读卡器根据命令返回的中断信号;在接收到中断信号时,查询射频读卡器内部存储模块的状态子地址的值;根据状态子地址的值判断射频读卡器是否成功执行完命令;若是,则读取射频读卡器根据命令发送的返回数据。如此,通过主机在读取返回数据之前可根据状态子地址的值分析是否需要读取对应的返回数据,不需要对所有的返回数据进行无条件读取,可提高通信效率。

The I of the host and the radio frequency reader

The invention relates to a I2C communication method and system for a host and a radio frequency reader. The method includes: sending commands to the radio frequency card reader, detecting whether the interrupt signal is returned by the command by the radio frequency card reader, and the value of the status sub address of the memory module inside the radio frequency card reader is querying when the interrupt signal is received; According to the value of the state sub address to determine whether the RF reader successfully executed the command; if so, read the return data sent by the RF reader according to the command. So, before the host reads the return data, it can analyze whether the corresponding return data need to be read according to the value of the state sub address. It does not need unconditional reading of all the returned data, which can improve the communication efficiency.

【技术实现步骤摘要】
主机与射频读卡器的I2C通信方法和系统
本专利技术涉及通信
,特别是涉及一种主机与射频读卡器的I2C通信方法和系统。
技术介绍
对外提供I2C接口的射频读卡器与主机的通信方式为I2C通信。传统的射频读卡器与主机I2C通信时,一般都是给射频读卡器设定一个从机地址,主机通过从机地址去访问射频读卡器。I2C通信过程中,主机发送命令后,射频读卡器对每条命令都会有一条返回帧作为回应,然后主机读取整条返回帧并通过返回帧的数据来判断命令是否执行成功。因此,命令指令失败时,主机也需要读取返回帧的数据,通信效率低。
技术实现思路
基于此,有必要针对上述问题,提供一种通信效率高的主机与射频读卡器的I2C通信方法和系统。一种主机与射频读卡器的I2C通信方法,包括:发送命令至射频读卡器,检测是否接收到所述射频读卡器根据所述命令返回的中断信号;在接收到所述中断信号时,查询所述射频读卡器内部存储模块的状态子地址的值;根据所述状态子地址的值判断所述射频读卡器是否成功执行完所述命令;若是,则读取所述射频读卡器根据所述命令发送的返回数据。一种主机与射频读卡器的I2C通信系统,包括:命令发送模块,用于发送命令至射频读卡器,检测是否接收到所述射频读卡器根据所述命令返回的中断信号;地址值获取模块,用于在接收到所述中断信号时,查询所述射频读卡器内部存储模块的状态子地址的值;状态分析模块,用于根据所述状态子地址的值判断所述射频读卡器是否成功执行完所述命令;数据接收模块,用于在所述射频读卡器成功执行完所述命令时,读取所述射频读卡器根据所述命令发送的返回数据。上述主机与射频读卡器的I2C通信方法和系统,基于设置有状态子地址的射频读卡器实现,可应用于与射频读卡器通信的主机,通过发送命令至射频读卡器、接收到射频读卡器根据命令返回的中断信号时,查询射频读卡器内部存储模块的状态子地址的值,根据状态子地址的值判断射频读卡器是否成功执行完命令;在根据状态子地址的值判定射频读卡器已经成功执行完命令后,读取射频读卡器根据命令发送的返回数据。如此,通过主机在读取返回数据之前可根据状态子地址的值分析是否需要读取对应的返回数据,不需要对所有的返回数据进行无条件读取,可提高通信效率。附图说明图1为一实施例中主机与射频读卡器的I2C通信方法的流程图;图2为另一实施例中主机与射频读卡器的I2C通信方法的流程图;图3为一实施例中主机与射频读卡器的I2C通信系统的结构图;图4为另一实施例中主机与射频读卡器的I2C通信系统的结构图。具体实施方式本专利技术的I2C通信的物理链路层是基于I2C的有器件子地址模式,射频读卡器内设有射频读卡器内部存储模块,用于存储多个子地址的值。本实施例中所述的射频读卡器,具体可以是指13.56MHz(兆赫兹)射频读卡器。参考图1,一实施例中的主机与射频读卡器的I2C通信方法,基于设有子地址的射频读卡器,可以应用于主机,该方法包括如下步骤。S110:发送命令至射频读卡器,检测是否接收到射频读卡器根据命令返回的中断信号。射频读卡器接收到主机发送的命令后,会返回中断信号给主机,用于通知主机执行下一操作。S120:在接收到中断信号时,查询射频读卡器内部存储模块的状态子地址的值。射频读卡器内部存储模块存储有多个子地址的值,其中,子地址包括状态子地址。状态子地址的值用于表征射频读卡器的状态,状态子地址在射频读卡器内部存储模块内的地址编号可预先设置,本实施例中,状态子地址的地址编号为0x0101。若检测到接收中断信号,则查询状态子地址的值,从而获取射频读卡器当前的状态。S130:根据状态子地址的值判断射频读卡器是否成功执行完命令。若是,则执行步骤S140。状态子地址不同的值对应射频读卡器不同的状态,状态子地址的值与状态的对应关系可预先存储。查询状态子地址后,可根据状态子地址的值获取对应的状态,从而判断射频读卡器是否成功执行完命令。成功执行完命令,表示射频读卡器有执行命令且成功执行完成。S140:读取射频读卡器根据命令发送的返回数据。射频读卡器成功执行完命令后,可响应命令得到返回数据。主机检测到射频读卡器成功执行完命令后,可读取射频读卡器发送的返回数据,至此成功完成一次命令的响应操作。上述主机与射频读卡器的I2C通信方法,基于设置有状态子地址的射频读卡器实现,可应用于与射频读卡器通信的主机,通过发送命令至射频读卡器、接收到射频读卡器根据命令返回的中断信号时,查询射频读卡器内部存储模块的状态子地址的值,根据状态子地址的值判断射频读卡器是否成功执行完命令;在根据状态子地址的值判定射频读卡器已经成功执行完命令后,读取射频读卡器根据命令发送的返回数据。如此,通过主机在读取返回数据之前可根据状态子地址的值分析是否需要读取对应的返回数据,不需要对所有的返回数据进行无条件读取,可提高通信效率。在一实施例中,参考图2,步骤S130包括步骤S131和步骤S132。S131:判断状态子地址的值是否与预设值一致。若是,则执行步骤S132。预设值可以根据实际需要具体设置。例如,本实施例中,预设值为0x00。S132:判定射频读卡器成功执行完命令。射频读卡器成功执行完命令后,可将状态子地址的值置为预设值,因此主机可以通过判断状态子地址的值是否与预设值一致,从而分析是否成功执行完命令。通过采用将状态子地址的值与固定的预设值比较的方式进行判断,操作逻辑简单且准确性高。在一实施例中,继续参考图2,步骤S130之后还包括步骤S150和步骤S160。S150:若射频读卡器没有成功执行完命令,则判断状态子地址的值是否与预设的未执行状态值、预设的正执行状态值和预设的空闲状态值中的任一值一致。若是,则返回步骤S130。若否,则执行步骤S160。未执行状态值用于表征射频读卡器未执行命令的状态,正执行状态值用于表征射频读卡器正在执行命令的状态,空闲状态值用于表征射频读卡器空前的状态。未执行状态值、正执行状态值和空闲状态值可根据实际需要具体设置,例如,本实施例中,未执行状态值为0x8D,正执行状态值为0x8C,空闲状态值为0x8A。射频读卡器没有成功执行完命令,可能的情况包括射频读卡器还未执行命令、正在执行命令、空闲、执行命令失败,前三种状态对应为既没有成功执行完命令且没有执行失败的情况。若状态子地址的值与未执行状态值一致,则表示射频读卡器未执行命令;若状态子地址的值与正执行状态值一致,则表示射频读卡器正执行命令;若状态子地址的值与空闲状态值一致,则表示射频读卡器空闲。在判断到射频读卡器处于未执行命令、正执行命令、空闲三种状态中的任意一种时,均返回步骤S130,从而继续判断射频读卡器是否成功执行完命令,以便在射频读卡器状态更改时及时获取。S160:判定射频读卡器执行命令失败。若判断到射频读卡器没有成功执行完命令,且状态子地址的值与未执行状态值、正执行状态值和空闲状态值均不一致,则表示射频读卡器执行命令失败,此时,可直接按照错误流程处理即可,无需再读取返回数据。步骤S150和步骤S160通过根据状态子地址的值将射频读卡器的状态分为多种情况,可提高状态判断的准确性,从而提高通信处理的准确性。在一实施例中,请继续参考图2,步骤S140包括步骤S141至步骤S143。S141:查询射频读卡器内部存储模块的帧长度子地址本文档来自技高网...

【技术保护点】
1.一种主机与射频读卡器的I2C通信方法,其特征在于,包括:发送命令至射频读卡器,检测是否接收到所述射频读卡器根据所述命令返回的中断信号;在接收到所述中断信号时,查询所述射频读卡器内部存储模块的状态子地址的值;根据所述状态子地址的值判断所述射频读卡器是否成功执行完所述命令;若是,则读取所述射频读卡器根据所述命令发送的返回数据。

【技术特征摘要】
1.一种主机与射频读卡器的I2C通信方法,其特征在于,包括:发送命令至射频读卡器,检测是否接收到所述射频读卡器根据所述命令返回的中断信号;在接收到所述中断信号时,查询所述射频读卡器内部存储模块的状态子地址的值;根据所述状态子地址的值判断所述射频读卡器是否成功执行完所述命令;若是,则读取所述射频读卡器根据所述命令发送的返回数据。2.根据权利要求1所述的主机与射频读卡器的I2C通信方法,其特征在于,所述根据所述状态子地址的值判断所述射频读卡器是否成功执行完所述命令,包括:判断所述状态子地址的值是否与预设值一致;若是,则判定所述射频读卡器成功执行完所述命令。3.根据权利要求1所述的主机与射频读卡器的I2C通信方法,其特征在于,所述根据所述状态子地址的值判断所述射频读卡器是否成功执行完所述命令之后,还包括:若所述射频读卡器没有成功执行完所述命令,则判断所述状态子地址的值是否与预设的未执行状态值、预设的正执行状态值和预设的空闲状态值中的任一值一致;若是,则返回所述根据所述状态子地址的值判断所述射频读卡器是否成功执行完所述命令的步骤;若否,则判定所述射频读卡器执行所述命令失败。4.根据权利要求1所述的主机与射频读卡器的I2C通信方法,其特征在于,所述读取所述射频读卡器根据所述命令发送的返回数据,包括:查询所述射频读卡器内部存储模块的帧长度子地址的值;根据所述帧长度子地址的值获取对应的数据长度;从所述射频读卡器内部存储模块的数据子地址中,按照顺序读取所述数据长度对应的数据,得到所述返回数据。5.根据权利要求1所述的主机与射频读卡器的I2C通信方法,其特征在于,所述命令有多个,且各命令的预设字段的低4位为命令帧序号,所述返回数据中携带有对应命令的命令帧序号;所述读取所述射频读卡器根据所述命令发送的返回数据之后,还包括:获取所述命令的命令帧序号和所述返回数据的命令帧序号;判断各命令的命令帧序号是否均有对应的返回数据的命令帧序号;若否,则查找没有对应返回数据的命令帧序号的命令,判定查找的命令对应的数据包丢失。6.一种主...

【专利技术属性】
技术研发人员:周立功
申请(专利权)人:广州周立功单片机科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1