yilaozhuang 发表于 2010-9-4 17:23:42

I2C无法发送重复起始条件?跪求高手出现解答一下

DWORD I2CStartAgain( void )
{
    BYTE clear;
        BYTE state;
        BYTE conf;
        BYTE data;

    DWORD timeout = 0;
    DWORD returnValue = FALSE;

        state=I20STAT;//值为0x28
        clear=I20CONCLR;//值为0x48
        conf=I20CONSET;//值为0x48
        data=I20DAT;//值为0x00
    /*--- Issue a start condition ---*/
    I20CONCLR = I2CONCLR_SIC;//|I2CONCLR_AAC|I2CONCLR_STAC;//发送重复起始条件前一定要清零SI
    I20CONSET = I2CONSET_STA|I2CONSET_I2EN;   /* Set Start flag */

        state=I20STAT;//值为0x28*******************按手册应该这里变为0x10(已发送重复起始条件)才对!!
        clear=I20CONCLR;//值为0x68
        conf=I20CONSET;//值为0x68**************写入的值应该是0x2C,怎么这里称了0x68了呢??
    /*--- Wait until START transmitted ---*/
    while( 1 )
    {
            if ( I20STAT == 0x10 )
            {
                  returnValue = TRUE;
                  break;   
            }
            if ( timeout >= MAX_TIMEOUT )
            {
                  returnValue = FALSE;
                  break;
            }
            timeout++;
    }
    return( returnValue );
------------------------
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_580319Q27N39.jpg
(原文件名:QQ截图未命名.jpg)

yilaozhuang 发表于 2010-9-4 20:08:38

各位大哥快帮帮忙啊,这个小问题为难我一周多了,郁闷

gaolf_2000 发表于 2010-9-4 21:13:11

看看上一状态,是不是应答的问题

yilaozhuang 发表于 2010-9-5 09:12:56

state=I20STAT;//值为0x28
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_580453GG65GJ.jpg
(原文件名:QQ截图未命名.jpg)
以状态值28是一家接收到正确的应答了

yilaozhuang 发表于 2010-9-6 09:15:00

继续等待中。。。

scfor 发表于 2011-10-21 16:26:59

有人说不用判断状态代码
页: [1]
查看完整版本: I2C无法发送重复起始条件?跪求高手出现解答一下