找回密码
 立即注册
查看: 2335|回复: 6

STC32G12K128 I2C需帮助

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-01-05 13:16:38

8

主题

20

回帖

314

积分

中级会员

积分
314
发表于 2023-3-21 13:11:36 | 显示全部楼层 |阅读模式
请教STC32G12K128    I2C的读写问题。程序使用数据手册例程。

硬件是铁电FM24C128,用模拟I2C能正常读写。但用系统I2C读写不能正常。读出数据都是FF(可能写也是错的)。为了排除FM24CL128问题,换成24c128问题同样。程序如下:
A0,A1,A2接地。

void Write_byte(uint addr,uchar dat)
{
        uchar i,j;
        i=addr/256;
    j=addr%256;
    Start();                                //发送起始命令
    SendData(0xa0);                         //发送设备地址+写命令
    RecvACK();
    SendData(i);                         //发送存储地址
    RecvACK();
    SendData(j);                         //发送存储地址
        RecvACK();
    SendData(dat);
    SendNAK();
        Stop();                                 //发送停止命令
}
uchar ReadNbyte(uint addr)
{
         uchar i,j;
        i=addr/256;
    j=addr%256;
    Start();                                //发送起始命令
    SendData(0xa0);                         //发送设备地址+写命令
    RecvACK();
    SendData(i);                         //发送存储地址
    RecvACK();
    SendData(j);                         //发送存储地址
    RecvACK();
    Start();                                //发送起始命令
    SendData(0xa1);                         //发送设备地址+读命令
    RecvACK();
        Stop();
    return i;                            //发送停止命令
}

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:81
  • 最近打卡:2024-10-17 09:35:06

9

主题

180

回帖

1778

积分

版主

积分
1778
发表于 2023-3-21 16:24:29 | 显示全部楼层
可参考STC32G实验箱例程包例子“28-I2C主机模式访问AT24C02程序”。用示波器测量I2C接口信号,确认发完数据后是否能收发ACK信号
7O46(`GC}$(4X2L1FX}S3}5.png

STC32G实验箱-DEMO-CODE-20230309.zip

24.38 MB, 下载次数: 97

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-3-21 18:18:22 | 显示全部楼层
如外部没加10K上拉电阻,你要打开内部4K上拉电阻,最好将你原理图的PDF发上来
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-01-05 13:16:38

8

主题

20

回帖

314

积分

中级会员

积分
314
发表于 2023-3-21 18:30:14 | 显示全部楼层
神*** 发表于 2023-3-21 18:18
如外部没加10K上拉电阻,你要打开内部4K上拉电阻,最好将你原理图的PDF发上来 ...

两个口上都有10K上拉
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-01-05 13:16:38

8

主题

20

回帖

314

积分

中级会员

积分
314
发表于 2023-3-21 18:32:23 | 显示全部楼层
用的是屠龙刀实验板

点评

对于这种情况,你需要对设备返回的ACK信号进行判断一下 看看信号究竟是ACK还是NAK 如果是NAK,说明设备根本没有相应,读取的数据一定FF 建议最好用示波器或者LA抓一下波形看看  详情 回复 发表于 2023-3-21 18:59
  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-3-21 18:59:57 | 显示全部楼层
神清*** 发表于 2023-3-21 18:32
用的是屠龙刀实验板

对于这种情况,你需要对设备返回的ACK信号进行判断一下
看看信号究竟是ACK还是NAK
如果是NAK,说明设备根本没有相应,读取的数据一定FF

建议最好用示波器或者LA抓一下波形看看
  • 打卡等级:偶尔看看III
  • 打卡总天数:33
  • 最近打卡:2025-01-05 13:16:38

8

主题

20

回帖

314

积分

中级会员

积分
314
发表于 2023-11-12 13:14:18 | 显示全部楼层
内部上拉了4K电阻,并且两个口成开路输入就成功了。如果不是开路就不行。不知道你们是不是必须设成开路
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 20:41 , Processed in 0.129583 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表