打印
[ZLG-ARM]

我的模拟i2c数据线有问题

[复制链接]
1072|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
变色镜|  楼主 | 2008-2-19 15:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2103的IO模拟一个非标准的I2C

#define    SHDA    (1<<26)        //  p0.26 湿度传感器数据线
#define    SHCK    (1<<12)        //  p0.12 湿度传感器时钟线
..........................................................................
void SHTStart (void)        //  开始
{    
    IOSET=SHDA+SHCK;------------注1
    IOCLR=SHDA;
    IOCLR=SHCK;
    IOSET=SHCK;        
    IOSET=SHDA;-----------------注2    
    IOCLR=SHCK;    
}
void SHTWbyte (uint8 cmd)    //  写一个字节
{    
    uint8 i=8;
    while(i>0)
    {
    if((cmd&0x80)==0x80)    /* 如果最高位是1*/
        IOSET=SHDA;
        else
        IOCLR=SHDA;
        cmd<<=1;
        i--;
        IOSET=SHCK;
        IOCLR=SHCK;-----------------注3    
    }            
}
..................................................................
PINSEL0=~(3<<24)&PINSEL0;    //    P0.12 IO口
PINSEL1=~(3<<20)&PINSEL1;    //    P0.26 IO口    
IODIR=(SHDA+SHCK)|IODIR;    //    IO输出
SHTStart();
SHTWbyte(0x03);
..................................................................
现象:在调用两个函数产生的时序中,时钟线都是正常的,数据线会有问题。

注1:执行完此语句后数据线SHDA是一个2V左右的电平,不是高电平(疑问)
注2:执行完此语句数据线SHDA是一个3.3V的高电平(正常)
注3:在最后一次循环中,执行此语句之前数据线SHDA是一个3.3V的高电平
   (正常), 但执行完此语句后数据线SHDA变为一个2V左右的电平(疑问)

现在有这么个现象,请各位帮忙看看什么引起的

相关帖子

沙发
zlgarm| | 2008-2-19 16:15 | 只看该作者

回复如下:

变色镜,您好!
    对您的问题作如下回答:
    1、检查数据线和时钟信号线有没有接上拉电阻;
    2、您可以到网上搜索一下用I/O口模拟I2C总线的资料,网上有许多关于这方面的资料。
                                   On duty:zlgarm_wuzhijian

使用特权

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

本版积分规则

22

主题

44

帖子

0

粉丝