Libby@ 发表于 2024-8-2 15:36

加密芯片ATSHA204A 通讯协议之I2C

本帖最后由 Libby@ 于 2024-8-2 15:58 编辑

#技术资源#

上次完成了ATSHA204A单总线(SWI)协议,今天整理了ATSHA204A 的I2C协议和通信信号,以下是 ATSHA204A 通过 I2C 协议进行通信的详细过程,包括唤醒、读取和发送命令。
I2C 接口:数据(SDA)和时钟(SCL)两个引脚。I2C 接口支持最高 1Mbps 的比特率。在 I2C 接口上,数据首先在总线上传入/传出 ATSHA204A 的 MSb。



1. 唤醒
ATSHA204A 在低功耗模式下,默认处于睡眠状态,需要唤醒后才能进行通信。唤醒过程如下:

1.    发送唤醒信号:主机将 I2C 总线上的 SDA 拉低至少 60 us。
2.    等待唤醒时间:主机等待 2.5 ms,SDA保持高电平至少2.5ms。
3.    检查唤醒响应:唤醒后,ATSHA204A 会在总线上发送一个固定的响应,即 0x11, 0x02, 0x33, 0x43,确认设备已经唤醒。

2. 发送命令
ATSHA204A 的命令传输包括以下步骤:
1.    起始条件 :主机发送起始条件。
2.    设备地址和写操作:主机发送设备地址(7-bit 地址)和写操作(8-bit,最低位为 0)。
3.    命令 (0x03):


[*]总长度 (Count):命令的总字节长度,包括 Count 字节本身。
[*]命令操作码 (Opcode):表示具体执行的命令,例如读取、写入、加密等。
[*]参数 (Param1 和 Param2):命令所需的参数。
[*]数据 (Data):一些命令可能需要附带的数据。
[*]校验和 (CRC):CRC-16,CRC 多项式为 0x8005,用于验证命令的完整性。
4.    停止条件 :主机发送停止条件。

3. 读取响应
读取 ATSHA204A 的响应步骤如下:
1.    起始条件:主机发送起始条件。
2.    设备地址和读操作:主机发送设备地址和读操作(最低位为 1)。
3.   命令 (0x03):

[*]总长度 (Count):响应的总字节长度。
[*]响应数据 :根据命令不同,返回不同的数据。
[*]校验和 (CRC)。
4.    停止条件 (Stop Condition):主机发送停止条件。

实际通信:先唤醒芯片,假设我们要发送一个 Read 命令读取数据,过程如下:1)唤醒 : 唤醒完整波形,拉低 SDA > 60 μs,等待 2.5 ms

返回数据块包括4个字节,0x04表示共4个字节,状态0x11表示成功唤醒,后面两位CRC校准值



2)发送read 命令:读取32个字节的命令,
[*]起始条件
[*]设备地址 + 写操作
[*]发送数据:
       Count:7
       Opcode:0x02(Read 命令)
       Param1:
       Param2:
       Data:空
       CRC:根据上述数据计算得到

[*]停止条件

如下 0x60 0x03 0x070x02 0x80 0x00 0x00 0x09 0xAD, 读取配置区域 (0~31)
3)发送空闲:
通过这些步骤,主机可以与 ATSHA204A 进行安全的 I2C 通信,实现各种安全操作。
欢迎大家留言https://bbs.21ic.com/static/image/smiley/default/smile.gif

zhanyanqiang 发表于 2024-9-13 14:37

芯岚微 发表于 2024-9-9 10:49
McuStudio 国内领先的MCU开发神器,全面兼容各大厂商的多样芯片。
McuStudio 能够简化芯片配置、缩短项目开 ...

还是别推广了,没有格局啊,体验一下居然还要公司注册这么麻烦,cubemx都没有这么麻烦
页: [1]
查看完整版本: 加密芯片ATSHA204A 通讯协议之I2C