搜索
bottom↓
回复: 4

关于I2C通讯方式的问题

[复制链接]

出0入0汤圆

发表于 2011-5-18 11:27:41 | 显示全部楼层 |阅读模式
我有块芯片,通讯方式是I2C的,但是写的程序总是有问题,应答的时候都是高电平。check_ACK得到的都是0, 就是无应答

逻辑分析仪抓出来的图形 (原文件名:1.JPG)

//**********************************************************
// Send Byte
//**********************************************************
void Send_Byte( unsigned char nByte )
{
         unsigned char i;
         
         for( i=0; i<8; i++ )
         {
              
              if( (nByte & BIT7)==BIT7 ) IC_DATA_OUT |= IC_DATA_BIT;
              else IC_DATA_OUT &=~IC_DATA_BIT;
              nByte <<= 1;
            
              IC_CLK_OUT |= IC_CLK_BIT;
              _NOP();
              _NOP();
              
              IC_CLK_OUT &=~IC_CLK_BIT;
              
              //_NOP();         
        }
        IC_CLK_OUT &=~IC_CLK_BIT;
}

/*******************************************************************************
* 函 数 名 : check_ACK                                                                                                   
功    能:检查从机的应答操作
参    数:无
返回值 :从机是否有应答:1--有,0--无
*******************************************************************************/
unsigned char wait_ack(void)
{   
      
      uchar slaveack;
      IC_DATA_OUT |=IC_DATA_BIT;
      _NOP(); _NOP();
      IC_CLK_OUT |=IC_CLK_BIT;
      _NOP(); _NOP();
      IC_DATA_DIR &=~IC_DATA_BIT;   
      _NOP(); _NOP();
      slaveack = IC_DATA_IN & IC_DATA_BIT;;   //读入SDA数值
      IC_CLK_OUT &=~IC_CLK_BIT;
      delay_Nus(1);
      IC_DATA_DIR |= IC_DATA_BIT;
  
     if(slaveack)    return 0;
     else            return 1;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2011-5-31 22:26:45 | 显示全部楼层
我也是这样的,你解决了吗

出0入0汤圆

发表于 2011-5-31 22:44:20 | 显示全部楼层
if you look at the i2c spec, what you should do for ack detection, after a write command, is to float sda to high, bring scl to high, and then read the sda.

出0入0汤圆

发表于 2011-6-1 10:48:41 | 显示全部楼层
楼上的意思是写命令之后要进行应答信号的检测

出0入0汤圆

发表于 2011-6-1 12:37:42 | 显示全部楼层
有很多现成程序吧
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-3 17:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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