找回密码
 立即注册
查看: 12|回复: 1

17-I2C从机中断模式与IO口模拟I2C主机进行自发自收

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-11-04 11:09:39

4

主题

-1

回帖

43

积分

新手上路

积分
43
发表于 10 小时前 | 显示全部楼层 |阅读模式
按照下载的这个程序测试,发现采用主机模拟方式的iic,从机无法接收;换成了主机硬件方式的iic可以,那位研究过给个解释,我用了两块开发板进行的验证。
截图202511041109168709.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:604
  • 最近打卡:2025-11-04 06:22:40
已绑定手机

87

主题

6445

回帖

1万

积分

超级版主

积分
12160
发表于 8 小时前 | 显示全部楼层
可以用逻辑分析仪或示波器对比一下波形有何区别
软件I2C程序:
  1. void        I2C_Delay(void)
  2. {
  3.         u16        dly;
  4.         dly = 8;                //取1对应SCL H为0.5us,L为1.5us,读写仍正常.为了可靠,取8
  5.         while(--dly)        ;
  6. }
  7. void I2C_Start(void)               //start the I2C, SDA High-to-low when SCL is high
  8. {
  9.         P_I2C_SDA = 1;        //SDA = 1;
  10.         I2C_Delay();
  11.         P_I2C_SCL = 1;        //SCL = 1;
  12.         I2C_Delay();
  13.         I2C_Delay();
  14.         I2C_Delay();
  15.         I2C_Delay();
  16.         P_I2C_SDA = 0;        //SDA = 0;
  17.         I2C_Delay();
  18.         I2C_Delay();
  19.         I2C_Delay();
  20.         P_I2C_SCL = 0;        //SCL = 0;
  21.         I2C_Delay();
  22. }
  23. void I2C_Stop(void)                                        //STOP the I2C, SDA Low-to-high when SCL is high
  24. {
  25.         P_I2C_SCL = 0;        //SCL = 0;
  26.         I2C_Delay();
  27.         P_I2C_SDA = 0;        //SDA = 0;
  28.         I2C_Delay();
  29.         P_I2C_SCL = 1;        //SCL = 1;
  30.         I2C_Delay();
  31.         I2C_Delay();
  32.         I2C_Delay();
  33.         P_I2C_SDA = 1;        //SDA = 1;
  34.         I2C_Delay();
  35. }
  36. u8 I2C_Check_ACK(void)         //Check ACK, If status=0: right, if status=1:  error
  37. {
  38.         u8        status;
  39.         P_I2C_SDA = 1;        //SDA = 1;
  40.         I2C_Delay();
  41.         P_I2C_SCL = 1;        //SCL = 1;
  42.         I2C_Delay();
  43.         status = 0;
  44.         if(P_I2C_SDA)
  45.                 status = 1;
  46.         P_I2C_SCL = 0;        //SCL = 0;
  47.         I2C_Delay();
  48.         return        status;
  49. }
复制代码


回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-11-4 21:14 , Processed in 0.124837 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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