Libby@ 发表于 2024-7-12 12:17

加密芯片ATSHA204A单总线(Single-Wire Interface, SWI)协议

本帖最后由 Libby@ 于 2024-7-12 12:19 编辑

#技术资源#
虽然官网提供了 ATSHA204A 的完整文档,但要快速获取有用信息,仍需花费一些时间。最近用逻辑分析仪观察了 ATSHA204A 的单总线协议和通信信号,以 ATSHA204A 为例,详细介绍其唤醒、读取和发送命令的过程。


单线接口(SWI)通信采用系统微处理器上的单个GPIO引脚连接到设备的SDA引脚。这种方法可以将连接器的引脚数量降至最少,特别适用于可移动或可替换的设备。其比特率最高可达25.6 kbps,与标准UART信号兼容。在ATSHA204A器件中,数据在总线上以LSb形式传输。下图显示了0x7F对应逻辑1,0x7D对应逻辑0。




在本实验中,主机 UART 端口设置为 7 位数据字和 230.4 kbps 数据速率。硬件上 TX 和 RX 短接并连接 SDA。


所需工具

[*]逻辑分析仪:国内有许多性价比高的工具可以使用。建议使用支持 Atmel 单线接口(SWI)协议的 Logic 软件。

[*]硬件:

[*] SAMD21 Xplained Pro 开发板
[*]一片 3 引脚触点式的 ATSHA204A
[*]几根跳线

[*]硬件连接 将 ATSHA204A 连接到 SAMD21 Xplained Pro 开发板,使用跳线连接所需引脚。确保 PB08 和 PB09 背面短接,并使用上拉电阻。






[*]观察 ATSHA204A 的唤醒信号:唤醒对于系统的正常工作至关重要。根据数据手册,“唤醒条件要求系统处理器手动将SDA引脚拉低持续时间为t(wlo),或者以足够慢的时钟速率发送数据字节0x00,以确保SDA至少低电平持续t(wlo)的最短时间。CryptoAuthLib在每次事务开始时都会进行唤醒,以确保在发送任何命令之前已经被唤醒。如下图保持SDA低电平至少60us,然后保持高至少1.5ms。
实验步骤:先唤醒芯片,再读取芯片版本1)唤醒
[*]唤醒完整波形




[*]分解开来



[*]发送I/O标志位0x88,读取唤醒状态
[*]返回数据块包括4个字节,0x04表示共4个字节,状态0x11表示成功唤醒,后面两位CRC校准值。


2)读取器件版本号(DevRev命令)
[*]发送命令I/O标志位0x77,

[*]数据块 0x7表示共7个字节, 0x30为DevRev命令操作码,三个参数(0x00,0x00,0x00),最后两位CRC校准值0x5d,0x03。返回值请大家留言{:smile:}


附上工程配置




通过这些步骤和工具的使用,可以更高效地对加密芯片的开发和调试。希望这些分享能帮助刚使用加密芯片的小伙伴们。

欢迎大家留言{:smile:}

Libby@ 发表于 2024-7-12 16:27

ATSHA204A Microchip CryptoAuthenticationTM 数据手册
https://www.microchip.com.cn/newcommunity//Uploads/201907/5d1962cb81d3a.pdf

Charlene沙 发表于 2024-8-15 13:18

这种加密芯片一般都是用在什么项目或者环境之中?

B1lanche 发表于 2024-8-15 14:20

我觉得可以用普通的加密或者校验就可以用吧

Libby@ 发表于 2024-8-15 14:31

Charlene沙 发表于 2024-8-15 13:18
这种加密芯片一般都是用在什么项目或者环境之中?

加密芯片可以应用到大部分生态环境,比如 IP保护、消耗品、安全下载、反克隆、网络节点报文安全。

Libby@ 发表于 2024-8-15 14:32

B1lanche 发表于 2024-8-15 14:20
我觉得可以用普通的加密或者校验就可以用吧

{:handshake:}

Emily999 发表于 2024-8-15 15:23

好像就微芯做的加密效果比较好

Alina艾 发表于 2024-8-15 16:28

原来可以使用I2C的通信就可以用啊

Candic12e 发表于 2024-8-15 17:34

这种需不需要DMA啥的?没必要是吧

Belle1257 发表于 2024-8-15 18:41

其实模拟时序应该就可以

Annie556 发表于 2024-8-15 19:22

话说logic这个是啥信号?是高电平和低电平的意思?

Estelle1999 发表于 2024-8-16 08:32

一般用模拟IO呗,这还用啥I2C的了啊

Carina卡 发表于 2024-8-16 10:02

这种芯片一般需要给他发啥内容就可以呢?

alxd 发表于 2024-8-16 13:00

用CRC校验是为了验证数据准确对么?

Libby@ 发表于 2024-8-16 14:54

Alina艾 发表于 2024-8-15 16:28
原来可以使用I2C的通信就可以用啊

I2C是可以,单线通讯可以使用更少的资源
加密芯片ATSHA204A 通讯协议之I2C
https://bbs.21ic.com/icview-3393956-1-1.html?fromuser=Libby@
(出处: 21ic电子技术开**坛)

Libby@ 发表于 2024-8-16 15:05

alxd 发表于 2024-8-16 13:00
用CRC校验是为了验证数据准确对么?

是的,在通讯过程中,加入CRC校验,可以用来验证接收的数据

Libby@ 发表于 2024-8-16 15:17

Carina卡 发表于 2024-8-16 10:02
这种芯片一般需要给他发啥内容就可以呢?

此芯片可作为密钥的存储,并且提供一些密码算法,比如SHA256/产生随机数

dzh20ls 发表于 2025-3-20 21:02

你好楼主,我最近也在开发这个芯片,我想问一下这个芯片的I2C协议和单总线协议是可以切换的吗?我看手册上说是基于设备的订购?还是说可以直接用任意一个协议。

Libby@ 发表于 2025-3-25 15:42

dzh20ls 发表于 2025-3-20 21:02
你好楼主,我最近也在开发这个芯片,我想问一下这个芯片的I2C协议和单总线协议是可以切换的吗?我看手册上 ...

不好意思,刚刚看到留言,不可以切换的,根据订购信息,I2C和单总线协议只能选一种

g36xcv 发表于 2025-3-27 16:43

ATSHA204A的唤醒通常需要发送一个唤醒信号。
页: [1]
查看完整版本: 加密芯片ATSHA204A单总线(Single-Wire Interface, SWI)协议