[PIC®/AVR®/dsPIC®产品] 用Attiny84A作为i2c的slave端,i2c写时获取不到写入的值

[复制链接]
356|35
小岛西岸来信 发表于 2026-6-20 10:21 | 显示全部楼层
ATtiny84A 作为 I2C 从机写失败,优先检查:USI 硬件模块未正确初始化、从机地址配置错误、中断未开启、SDA/SCL 无上拉电阻。需启用 USI_START_COND_INT 中断,正确处理 USI overflow 中断,按从机时序缓存数据。无硬件上拉、时序错误、地址不匹配均会导致写值丢失。
小岛西岸来信 发表于 2026-6-20 10:21 | 显示全部楼层
ATtiny84A 作为 I2C 从机写失败,优先检查:USI 硬件模块未正确初始化、从机地址配置错误、中断未开启、SDA/SCL 无上拉电阻。需启用 USI_START_COND_INT 中断,正确处理 USI overflow 中断,按从机时序缓存数据。无硬件上拉、时序错误、地址不匹配均会导致写值丢失。
牛奶秋刀鱼 发表于 2026-7-30 16:03 | 显示全部楼层
多为 I2C 从机中断处理时序错误,未及时读取接收寄存器导致数据覆盖;未正确响应主机应答或停止信号。需在接收中断立刻读取 TWDR 缓存数据,应答时序匹配;配置上拉电阻,关闭多余中断抢占,增加数据缓冲区锁存,校验地址匹配标志,避免写入数据丢失。
huahuagg 发表于 2026-8-1 21:51 | 显示全部楼层
绝大多数收不到数据的问题都出在软件时序、引脚配置、ACK 应答、寄存器配置、时序匹配这几点
我趴在云边 发表于 2026-8-7 16:07 | 显示全部楼层
先核查 I2C 从机地址匹配、SDA/SCL 引脚配置与上拉电阻。确认接收中断触发后及时读取接收寄存器,未及时读会覆盖数据。关闭引脚复用干扰,避免主从电平不匹配。检查应答信号 ACK 是否正常发出,主机无 ACK 会终止传输,从机无法锁存写入数据。
物联万物互联 发表于 2026-8-8 08:53 | 显示全部楼层
检查I2C线路是否正确连接,确保时钟线和数据线连接稳定,以及检查引脚设置是否与I2C模式匹配。
AutoMotor 发表于 2026-8-10 13:46 | 显示全部楼层
检查I2C总线拉线是否正确,确认时钟频率和地址设置无误,并检查 Attiny84A 的I2C相关寄存器配置。
我趴在云边 发表于 2026-8-10 16:07 | 显示全部楼层
确认从机地址无误,SDA、SCL 外接上拉电阻,引脚未被其他功能占用。I2C 接收中断触发后立刻读取数据寄存器,防止新数据覆盖旧值。正常发送应答位,主机收不到 ACK 会直接停止发送。排查主循环阻塞导致中断响应滞后,数据读取失效。
拿走一光年 发表于 2026-8-12 14:59 | 显示全部楼层
确认 ATtiny84A I2C 从机地址配置无误,开启应答位 ACK 输出;SDA/SCL 外接 4.7k 上拉电阻,MCU 休眠时禁用模块。接收中断内及时缓存接收字节,避免数据被后续时序覆盖,校验起始、停止时序解析逻辑,排查引脚复用功能冲突覆盖 I2C 管脚。
世纪女孩 发表于 2026-8-13 09:42 | 显示全部楼层
故障多为 I2C 从机应答时序缺失、接收缓冲未及时读取、从机地址配置错误。确认 ATtiny84A 使能应答信号,在接收中断内立刻存入接收寄存器数据,避免数据被覆盖。检查上拉电阻,主机时序匹配,关闭引脚复用功能,中断及时清零标志位,即可正常读取主机下发数据。
少女诗篇 发表于 2026-8-19 10:40 | 显示全部楼层
Attiny84A 做 I2C 从机读不到主机写入数据,优先确认使能 TWI 从机模式,开启应答 ACK。检查从机地址配置是否和主机一致,注意读写位区分。必须在 TWI 中断内读取 TWDR 寄存器,不能轮询读取;读完数据及时清除中断标志。注意时钟上拉电阻,避免信号畸变。若未发送 ACK,主机不会送出后续字节,就无法拿到有效写入数据。
少女诗篇 发表于 2026-8-20 10:41 | 显示全部楼层
Attiny84A 依靠 USI 实现 I2C 从机,波形数据正确却读不到值,常是 USICS 采样边沿配置错误,误用下降沿采样。要在 USI 溢出中断内读取 USIBR 锁存完成数据,不能直接读 USIDR。确认 SDA/SCL 外接 4.7k 上拉,7 位从机地址无移位错误,开启起始条件与溢出中断,状态机完整应答 ACK,避免数据被移位覆盖。
少女诗篇 发表于 2026-8-23 10:42 | 显示全部楼层
Attiny84A 依靠 USI 硬件实现 I2C 从机,写操作收不到数据多为 USI 配置问题。要开启起始检测与 USI 溢出中断,必须在中断回调读取 USIBR,不要读 USIDR。确认从机地址配置无误,SDA、SCL 外接上拉电阻。完整实现状态机,收到字节后回发 ACK;不回复应答,主机不会继续下发数据,同时注意采样边沿选择,防止数据移位错乱。
热爱浪漫 发表于 2026-9-13 15:31 | 显示全部楼层
Attiny84A 做 I2C 从机读不到写入值,常见原因:未正确使能 TWI 应答,SLAW 匹配中断后未读取 TWDR;TWDR 被过早覆盖。需在 SLA_W 中断回调里立即读取 TWDR 保存数据,发送 ACK 应答。检查上拉电阻,关闭时钟拉伸;注意中断标志需硬件清零。若未应答,主机不会发送数据,就无法获取有效写入值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0