Ink笔记_ink correction

Ink笔记_ink correction最近想要复刻一下稚晖君的小卡片,因此来学习一下。1.ST25DV作为NFC的PHY通过I2C总线和STM32通信,主要作用有两个:能量采集以及NFC通信。注意,ST25DV只是负责和手机进行NFC通信,而不负责IC卡的读写功能,因为ST25DV只支持ISO15693的RFID协议,而我们常用的IC卡(M1卡)是ISO14443协议的,所以并不能直接使用这颗芯片进行IC卡模拟。2.IC卡的模拟功能这一版中实现得比较简单,就是直接集成了多颗UID芯片(很便宜,1~2元一片),然后和ST25DV共用N

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

最近想要复刻一下稚晖君的小卡片,因此来学习一下。

一、一些开始着手时的模糊的问题解决

1.ST25DV作为NFC的PHY通过I2C总线和STM32通信,主要作用有两个:能量采集以及NFC通信。注意,ST25DV只是负责和手机进行NFC通信,而不负责IC卡的读写功能,因为ST25DV只支持ISO 15693的RFID协议,而我们常用的IC卡(M1卡)是ISO 14443协议的,所以并不能直接使用这颗芯片进行IC卡模拟。

2.IC卡的模拟功能这一版中实现得比较简单,就是直接集成了多颗UID芯片(很便宜,1~2元一片),然后和ST25DV共用NFC天线,卡片的切换是通过拨轮换挡实现的。好处在于,你可以把L-ink当作多张独立卡片的合集处理,复制和刷卡都是很直接的(使用PM3或者PN532等模块读取原卡信息并写入L-link)。当然缺点就是添加的卡片一多,按键的数量就要增加(因为每一档对应一张卡)。

用一张图来说清楚NFC与RFID的区别 – NFC之家

所以,用到的PN532不需要编程开发

二、通信协议

1.硬件SPI与模拟SPI

硬件SPI因为有专用的寄存器支持,所以很少占用CPU资源,但是并不是每一款处理器都能提供SPI,而且有时候即使有SPI硬件接口,可能因为数量不够或者管脚被占用,导致硬件SPI不能使用,这时候就可以使用GPIO模拟SPI通讯,这样的好处是可以使用任意GPIO管脚实现SPI通讯,并且代码通用性很强,可以在不同处理器甚至不同架构之间移植,比较方便。

2.SPI与IIC通信协议

SPI与IIC通信协议_NaCl鱼呜啦啦的博客-CSDN博客

IIC:ST25DV

SPI:墨水屏

3.SPI通信时序

d0a612814d65870f95526441af1ae8d7.png

由于墨水屏只需要显示,这里将从机发,主机收的数据线(MISO)隐藏。
CS:从机片选,当CS为低电平的时候,芯片使能
DC:数据/命令控制引脚,当DC=0时写入命令;DC=1时写入数据
SCLK: SPI通信时钟
SDIN:SPI通信主机发送,从机接收
时序:CPHL=0, CPOL=0 (SPI0)

时钟极性(CPOL)定义了时钟空闲状态电平:CPOL=0为时钟空闲时为低电平

时钟相位(CPHA)定义数据的采集时间:CPHA=0:在时钟的第一个跳变沿(上升沿或下降沿)进行数据采样。

三、墨水屏

1.工作原理

        微胶囊电泳显示”技术:其基本原理是悬浮在液体中的带电纳米粒子受到电场作用而产生迁移。电子纸显示屏是靠反射环境光来显示图案的,不需要背光,在环境光下,电子纸显示屏清晰可视,可视角度几乎达到了 180°。

2.注意事项

  1. 注意屏幕不能长时间上电,在屏幕不刷新的时候,要将屏幕设置成睡眠模式,或者进行断电处理。否则屏幕长时间保持高电压状态,会损坏膜片,无法修复!
  2. 使用墨水屏的时候,建议刷新时间间隔至少是180s, 并且至少每24 小时做一次刷新,如果长期不使用墨水屏的话,要将墨水屏刷白存放。(具体储存环境需求参考数据手册)

四、产品选型

1.NFC通信芯片–st25dv

支持能量采集功能,将卡片获得的能量同时传输出来供一部分给MCU使用;MCU用来驱动刷新墨水屏。

2.主控芯片MCU的选择

超低功耗L051

五、ST25DV的NFC协议——ISO15693

1.ISO15693与ISO14443A/B

①通信距离的不同:

ISO15693协议的理论读写距离≤1m,ISO14443A/B协议的理论读写距≤10cm

读写远距离换来的就是私密性的丧失和通信速率的降低。

2.NFC学习笔记

        近场通信(Near-field communication,简称NFC)技术可以提供短距离无线连接,实现电子设备间的双向交互通信。NFC技术由RFID(非接触式射频识别)演变而来,但NFC有特定的标准集,确保具有NFC功能的设备的互操作性。

        NFC采用电磁耦合感应技术,电磁场频率是13.56MHz,该载波频段是全球无需许可证的波段。发起设备用13.56MHz信号激励天线,产生磁场。通过近场耦合,将能量传递给目标。目标对磁场进行调制,将数据返回给发起设备完成通信。

NFC学习笔记_NaCl鱼呜啦啦的博客-CSDN博客

NFC有三种工作模式,该项目应该使用的是读卡器模式

3.NFC标签

将 NFC 标签与 Android 设备结合使用时,用于读取和写入标签数据的主要格式是 NDEF。当设备扫描具有 NDEF 数据的标签时,Android 会尽可能在解析消息和通过 NdefMessage 传递该消息方面提供支持。不过,在某些情况下,您扫描的标签可能不包含 NDEF 数据,或者 NDEF 数据无法映射为 MIME 类型或 URI。在这些情况下,您需要直接开启与标签的通信,并使用自己的协议(以原始字节形式)对标签执行读写操作。Android 通过 android.nfc.tech 软件包对这些用例提供一般性支持,如表 1 所述。您可以使用 getTechList() 方法确定标签支持的技术,还可以使用 android.nfc.tech 提供的一个类来创建相应的 TagTechnology 对象。

Ink笔记_ink correction

六、卡片的复制

1.cuid和uid卡有什么区别

CUID卡不响应后门指令。UID卡响应后门指令。

后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。

相应后门指令的UID卡是可以格式化的,在练习读写卡的时候,最好使用UID卡,这样便于在将数据写坏后重置。

2.IC卡

Ink笔记_ink correction

UID与CUID的区别:

UID具有“后门”,CUID则没有“后门”。具有“后门”则可以绕过正常的权限,对数据进行激活成功教程、格式化等。

每张IC卡都有16个扇区,包括1个公共区和15个数据区。每个扇区有4个块,每个块占16字节。

每个扇区的块0,块1,块2可以用来存储数据(扇区0的块0除外)。

第0扇区的块0为厂商代码,已经固化。包括芯片序列号UID,ATQA和SAK。

每个扇区的块3为控制块,用来存放密码和控制权限 ,不能用来存储数据。

块3的前6个字节为KeyA,后6个字节为KeyB。中间的4个字节为存储控制。

每个扇区可以通过它包含的密钥A或者密钥B单独加密。

Ink笔记_ink correction

七、图像处理

1.灰度处理

        在图像处理中,用RGB三个分量(R:Red,G:Green,B:Blue),即红、绿、蓝三原色来表示真彩色,R分量,G分量,B分量的取值范围均为0~255。

灰度图像是RGB三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。 

        图像的灰度化处理可用两种方法来实现。

        第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。

        第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+ 0.59G +0.11B,以这个亮度值表达图像的灰度值。

2.二值化

        二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色),也就是让整个图像呈现只有黑和白的效果。在灰度化的图像中灰度值的范围为0~255,在二值化后的图像中的灰度值范围是0或者255。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226859.html原文链接:https://javaforall.net

(0)
上一篇 2025年6月23日 上午9:15
下一篇 2025年6月23日 上午9:43


相关推荐

  • Idea激活码永久有效Idea2018.2.8激活码教程-持续更新,一步到位

    Idea激活码永久有效Idea2018.2.8激活码教程-持续更新,一步到位Idea激活码永久有效2018.2.8激活码教程-Windows版永久激活-持续更新,Idea激活码2018.2.8成功激活

    2022年6月17日
    25
  • Android 4.0开发之GridLayOut布局实践

    Android 4.0开发之GridLayOut布局实践在上一篇教程中http://blog.csdn.net/dawanganban/article/details/9952379,我们初步学习了解了GridLayout的布局基本知识,通过学习知道,GridLayout可以用来做一个象TableLayout这样的布局样式,但其性能及功能都要比tablelayout要好,比如GridLayout的布局中的单元格可以跨越多行,而tablelayout则不

    2022年5月28日
    38
  • MySQL分页查询limit优化的两种思路

    MySQL分页查询limit优化的两种思路我们知道 limit 分页 当翻到比较靠后的页时 查询效率会越来越慢 如这则帖子所述 浅谈 PageHelper 插件分页实现原理及大数据量下 SQL 查询效率问题解决博主这也是一种不错的思路 其实针对分页这个问题 了解其为什么慢就知道优化方法了 按我的理解如下 不一定说的很准确哈 1 以前 select fromtableord 10 这种方式 分页是怎么分的呢 是从磁盘拿整一个数据页到存储引擎缓冲区 比如 limit100 10 那就要按顺序先取出前 100 条

    2026年3月18日
    2
  • python圆面积的计算_Python编程题:输入圆半径,输出圆面积?python计算圆面积教程…

    python圆面积的计算_Python编程题:输入圆半径,输出圆面积?python计算圆面积教程…python 计算圆的面积 读程序 要求格式化输出浮点数 s 并保留 6 位小数 请填写 缺少的语句 你好 保留 6 位小数的代码是 s 6f s 第一个空是 returns 第二个空是 6fPython 编程题 输入圆半径 输出圆面积 coding utf 8 author chenhaifeia input 请输入圆的半径 b 3 14 a aprintb 在线等 急 Python 求圆面

    2026年3月19日
    2
  • 海量数据存储技术(cpu制造瓶颈)

    对于海量数据的处理随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失;负载均衡策略:可以降低单台机器的访问负载,降…

    2022年4月14日
    54
  • React(四)React生命周期、发送网络请求、跨域处理

    React(四)React生命周期、发送网络请求、跨域处理React 生命周期 发送网络请求获取网络数据 跨域的处理

    2026年3月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号