打印

软件模拟的I2C,只能读到低4位,还被移到了高4位上

[复制链接]
1184|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
donkey89|  楼主 | 2011-6-29 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
软件模拟的I2C,高4位被忽略了,只能读到低4位,还被移到了高4位上,低4位被0填充.
例如0x3A,读出来是0XA0,0XB5,读出来是0X50.
大家帮我分析一下是可能的原因是什么?
uint8_t i2c_read(void)
{
        uint8_t rd =0;
        uint8_t i;
        //GPIO_Init(SDIO_PORT,SDIO_PIN,GPIO_MODE_IN_FL_NO_IT);//设置端口为输入
        SDIO_HIGH;//外部上拉,所以要先设置成高,才可以读端口
        nop();
nop();
        nop();
nop();
        nop();
        nop();
nop();
        nop();
        nop();
nop();
        nop();
        nop();
        for ( i=0;i<8 ;i++ )
        {
                SCLK_LOW;
nop();
                nop();
                nop();
                nop();
                nop();
                nop();
                nop();
                nop();
                nop();
                nop();
                nop();
                nop();
                nop();
                nop();
               
                       rd<<=1;
                SCLK_HIGH;
                nop();
                rd|=GPIO_ReadInputPin(SDIO_PORT,SDIO_PIN);

        }
        //GPIO_Init(SDIO_PORT,SDIO_PIN,GPIO_MODE_OUT_OD_HIZ_SLOW);//恢复端口为输出
        return rd;
}

相关帖子

沙发
ayb_ice| | 2011-6-29 10:26 | 只看该作者
CLK提高后多延时一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:数显ESR电容等效内阻测量仪 http://cn.digit-esr.com

241

主题

1609

帖子

1

粉丝