本帖最后由 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 通信,实现各种安全操作。
欢迎大家留言 |