找回密码
 立即注册
查看: 785|回复: 13

8G1K08-36I-SOP8 I2C 读写外设slave 设备 失败问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-09-09 23:22:12

3

主题

6

回帖

41

积分

新手上路

积分
41
发表于 2024-9-4 10:40:12 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-9-4 11:05 编辑

请教一下,目前使用8G-STC8H-LIB-DEMO-CODE-20240429  独立程序 里的 “18-I2C主机模式访问AT24C02程序” 做基础,修改为 访问其他I2C slave设备,
修改了 I2C 地址,也修改的对应的 端口号,但是运行程序的时候,卡在I2C_ReadNbyte 函数,不能往下进行! I2C使用的是 MCU 的 第 7 和 第 8脚位(P3.2 和 P3.3)
I2C_config 里面也选用了这两个脚位 I2C_SW(I2C_P33_P32); 大概是什么问题导致 主程序不能执行下去!

截图202409041043307907.jpg 截图202409041044504475.jpg 截图202409041047011619.jpg

截图202409041047579760.jpg

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-9-4 11:10:33 | 显示全部楼层
8G1K08A硬件I2C测试正常:
#define         SCL                P32
#define         SDA                P33
bit I2C_Busy;

void I2C_Start(void)
{
        I2C_Busy=1;
        I2CMSCR=0x81;
        while(I2C_Busy);
}

void I2C_SendData(unsigned char dat)
{
        I2CTXD=dat;
        I2C_Busy=1;
        I2CMSCR=0x82;
        while(I2C_Busy);
}

void I2C_RecvACK(void)
{
        I2C_Busy=1;
        I2CMSCR=0x83;
        while(I2C_Busy);
}

//unsigned char I2C_RecvData(void)
//{
//        I2C_Busy=1;
//        I2CMSCR=0x84;
//        while(I2C_Busy);
//        return I2CRXD;
//}

//void I2C_SendACK(void)
//{
//        I2CMSST=0x00;
//        I2C_Busy=1;
//        I2CMSCR=0x85;
//        while(I2C_Busy);
//}

//void I2C_SendNAK(void)
//{
//        I2CMSST=0x01;
//        I2C_Busy=1;
//        I2CMSCR=0x85;
//        while(I2C_Busy);
//}

void I2C_Stop(void)
{
        I2C_Busy=1;
        I2CMSCR=0x86;
        while(I2C_Busy);
}

void Init(void)
{
        P_SW2|=EAXFR;
        P3M0=0x00;
        P3M1=0x00;
        P5M0=0x00;
        P5M1=0x00;
        P3PU=0x0c;
        I2CCFG=0xC1;        //921.6K@11.0592M
        I2CMSCR=EMSI;
        I2CMSST=0x00;
        EA=1;
}

void I2C_Isr(void) interrupt 24
{
        if(I2CMSST&MSIF)
        {
                I2CMSST&=~MSIF;
                I2C_Busy=0;
        }
}

DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:455
  • 最近打卡:2025-05-01 08:13:06
已绑定手机

27

主题

341

回帖

1687

积分

金牌会员

机长

积分
1687
发表于 2024-9-4 19:46:27 | 显示全部楼层
你的其它IIC设备是啥呢?它的协议是否支持I2C_ReadNbyte这个行为?
业余撸代码,专业开飞机
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-05-02 03:42:37

22

主题

283

回帖

905

积分

高级会员

积分
905
发表于 2024-9-4 22:04:12 | 显示全部楼层
硬件i2c没有使能会卡的
REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-05-02 03:42:37

22

主题

283

回帖

905

积分

高级会员

积分
905
发表于 2024-9-4 22:08:59 | 显示全部楼层
初始化i2c后,打印i2c的寄存器看有没有正确写入初始化数据
REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2024-9-5 10:27:57 | 显示全部楼层
请问P3.2 和 P3.3的IO口模式初始化了吗?
默认是高阻输入,没有初始化不能通信。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-09-09 23:22:12

3

主题

6

回帖

41

积分

新手上路

积分
41
发表于 2024-9-5 17:23:39 | 显示全部楼层
附图是我的代码,应该是初始化过了吧
截图202409051721277740.jpg
截图202409051721482170.jpg

main.c

5.65 KB, 下载次数: 60

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2024-9-5 18:48:33 | 显示全部楼层
再查一下你修改过的程序,看看有没有哪些地方修改了P_SW2寄存器,例如调用EAXRAM,误关闭了扩展寄存器访问使能。
I2C寄存器基本上都是扩展寄存器,如果关闭了扩展寄存器访问使能,就会导致无法正常读写I2C寄存器。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-09-09 23:22:12

3

主题

6

回帖

41

积分

新手上路

积分
41
发表于 2024-9-5 22:23:55 | 显示全部楼层
f42073b1e2361ce5dfc5576a09be8f3.png

整个project,只有定义 EAXRAM, 没有其他地方调用!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-09-09 23:22:12

3

主题

6

回帖

41

积分

新手上路

积分
41
发表于 2024-9-5 22:26:46 | 显示全部楼层
本帖最后由 兴睿康-林生 于 2024-9-5 22:28 编辑

现在是要用MCU I2C主模式,访问,读写 外部其他芯片的I2C 寄存器,不是读写MCU 寄存器哦
是不是I2C_ReadNbyte 这个函数,只能读取eeprom ,连续N个 data, 不能读取其他芯片 寄存器,先写寄存器地址,后读取data?
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 04:13 , Processed in 0.181057 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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