首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM学习IIC总线接口(3)

ARM学习IIC总线接口(3)

2.1 总线数据传送的模拟  
           主机可以采用不带I2C总线接口的单片机,如80C51、AT89C2051等单片机,利用软件实现I2C总线的数据传送,即软件与硬件结合的信号模拟。
        一、典型信号模拟
            为了保证数据传送的可靠性,标准的I2C总线的数据传送有严格的时序要求。I2C总线的起始信号、终止信号、发送“0”及发送“1”的模拟时序 :
               

        二、典型信号模拟子程序
        (1)起始信号
        Void T2CStart(void)
        {
       
SomeNop(  );
       
SCL = 1;
       
SomeNop(  );
       
SDA = 0;
       
SomeNop(  );
       
SCL = 0;
       
SomeNop(  );
        }
        (2)终止信号
        void I2cStop(void)
        {
       
SDA = 0;
       
SomeNop(  );
       
SCL = 1;
       
SomeNop(  );
       
SDA = 1;
       
SomeNop(  );
       
SCL = 0;
        }
        2.2 I2C总线器件的扩展
        一、扩展电路
          
        二、串行E2PROM的扩展
          (1)串行E2PROM典型产品
        ATMEL公司的AT24C系列:  
           AT24C01:128字节(128×8位);
           AT24C02:256字节(256×8位);
           AT24C04:512字节(512×8位)AT24C08:1K字节(1K×8位);
           AT24C16:2K字节(2K×8位);
         (2)写入过程
            AT24C系列E2PROM芯片地址的固定部分为1010,A2、A1、A0引脚接高、低电平后得到确定的3位编码。形成的7位编码即为该器件的地址码。
            单片机进行写操作时,首先发送该器件的7位地址码和写方向位“0”(共8位,即一个字节),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为相应,单片机收到应答后就可以传送数据了。
            传送数据时,单片机首先发送一个字节的被写入器件的存储区的首地址,收到存储器器件的应答后,单片机就逐个发送各数据字节,但每发送一个字节后都要等待应答。
            AT24C系列器件片内地址在接收到每一个数据字节地址后自动加1,在芯片的“一次装载字节数”(不同芯片字节数不同)限度内,只需输入首地址。装载字节数超过芯片的“一次装载字节数”时,数据地址将“上卷”,前面的数据将被覆盖。
            当要写入的数据传送完后,单片机应发出终止信号以结束写入操作。写入n个字节的数据格式 :

        (3)读出过程
             单片机先发送该器件的7位地址码和写方向位“0”(“伪写”),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为相应。
             然后,再发一个字节的要读出器件的存储区的首地址,收到应答后,单片机要重复一次起始信号并发出器件地址和读方向位(“1”),收到器件应答后就可以读出数据字节,每读出一个字节,单片机都要回复应答信号。当最后一个字节数据读完后,单片机应返回以“非应答”(高电平),并发出终止信号以结束读出操作。



3、S3C2440 IIC总线控制器寄存器介绍
        S3C2440的IIC接口有4种工作方式:主机发送器、主机接收器、从机发送器、从机接收器
       
        S3C2440使用4个寄存器来完成所有IIC的操作
        1)IICCON寄存器
                IICCON寄存器用于控制是否发出ACK信号、设置发送器的时钟、开启IIC中断,并标识中断是否发生
       
                使用IICCON寄存器时,应注意
                ①发送模式的时钟频率由位[6]、位[3:0]联合决定。另外,当IICCON[6]=0时,IICCON[3:0]不能取0或1
                ②IIC中断在以下三种情况下发生:当发出地址信息或接收到一个从机地址并且吻合时,当总线仲裁失败时,当发送/接收完一个字节的数据(包括相应位)时
                ③基于SDA、SCL线上时间特性的考虑,要发送数据时,先将数据写入IICDS寄存器,然后再清除中断
                ④如果IICCON[5]=0,IICCON[4]将不能正常工作。所以,即使不使用IIC中断,也要讲IICCON[5]设为1
        2)IICSTAT寄存器
                 IICSTAT寄存器用于选择IIC接口的工作模式,发出S信号、P信号,使能接收/发送功能,并标识各种状态,比如总线仲裁是否成功、作为从机时是否被寻址、是否接收到0地址、是否接收到ACK信号
       
        3)IICADD寄存器
                IICADD寄存器[7:1]表示从机地址,IICADD寄存器在串行输出使能位IICSTAT[4]为0时,才可以写入,在任何时候都可以读取
        4)IICDS寄存器
                IICDS寄存器[7:0],保存要发送或已经接收到的数据,IICDS寄存器在串行输出使能位IICSTAT[4]为1时,才可以写入,在任何时候都可以读取

        3、S3C2440 IIC总线操作方法
继承事业,薪火相传
返回列表