ST意法半导体
直播中

手托初梦

9年用户 849经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[问答]

从I2C写入系统配置内存失败可能是什么原因?是否按照正确的程序写入系统配置?

我正在研究 ST25DV64KC NFC 芯片。我正在尝试从 i2c 写入系统配置内存。
脚步:
1) 我通过发送当前密码命令打开了 i2c 安全会话。我已经从动态寄存器内存中读取了 I2C_SSO_Dyn 寄存器,它返回的“0x01”意味着 i2c 安全会话已正确打开。
2) 之后,我尝试使用 i2c 块写入将 LOCK_CFG 寄存器的字节值更改为 0x01,方法是保持前 14 个字节不变,第 15 个字节(即 LOCK_CFG)更改为 0x01。
3) 我已从 ST25 NFC tap android 应用程序读取系统配置寄存器,但 LOCK_CFG 值未更新为 0x01。
4) 对于用户内存,我能够从 i2c 端正确读取和写入。我也能正确读取系统配置内存,但无法写入。
数据表中的注释:
I2C 安全会话必须首先通过提供有效的 I2C 密码打开,以授予对系统配置寄存器的写访问权限
可能是什么原因?我是否按照正确的程序写入系统配置?










回帖(1)

王玉英

2022-12-8 16:19:53
你的第一步看起来不错。如果您读取 I2C_SSO_Dyn=0x01,则表示 I2C 安全会话已正确打开。
那么您的第 2 步可能有问题。
“我试图通过使用 i2c 块写入将前 14 个字节保持原样并将第 15 个字节(即 LOCK_CFG 更改为 0x01)将 LOCK_CFG 寄存器的字节值更改为 0x01”
第 14 字节和第 15 字节是什么意思?
LOCK_CFG 配置只有 8 位长。
你能更详细地描述你的 i2C 写命令吗?
它应该看起来像这样:
S/0xAE/sA/0x00/sA/0x0F/sA/0x01/sA/P
S=Start,sA=slave acknowledge bit 和 P=Stop。
第一个字节 AE 是系统内存的从机地址。
接下来的两个字节是内存地址(LCK_CFG 为 0x000F)
最后一个字节是您要写入 LCK_CFG (0x01) 的值
举报

更多回帖

发帖
×
20
完善资料,
赚取积分