分享

IIC简单实现!

 创科之龙 2011-01-11
IIC简单实现!
1.实现过程说明
利用两个GPIO来模拟IIC总线,一跟用来模拟时钟SCL输出,而另一根用来模拟数据线SDA,通过时钟线产生的时序来传输(读or写)数据。
IIC总线的写数据过程:
1.         传输开始信号启动从机
2.         传输8位的从机地址(slave ID)
3.         从机应答信号(0:应答(ACK);1:无应答)
4.         写从机寄存器地址
5.         从机应答信号
6.         写一个字节数据
7.         从机应答信号
8.         传输停止信号(设备停止)
9.         延时1ms左右(是必要的,因为设备关闭需要一定的时间,否则下一次启动会发生错误)
 
IIC总线的读数据过程:
1.         传输开始信号启动从机
2.         传输8位的从机地址(slave ID)
3.         写从机寄存器地址
4.         从机停止
5.         重新启动从机
6.         传输8位的从机地址与读信号(slave ID|0x01)
7.         读数据(8位数据无应答,16位数据传输前8位后主机要应答一次)
8.         从机停止
9.         延时1ms左右(是必要的,因为设备关闭需要一定的时间,否则下一次启动会发生错误)
(从及地址最低位为本次数据传输的方向:0为写,1为读)
在每次数据传输的时候都需要发送启动信号和停止信号!
2.开始结束条件实现
 
开始条件和结束条件
 

     
由于初始化的时候我们将模拟SCL的GPIO初始化为输出,而对SDA的GPIO不进行初始化,根据操作来设置SDA的方向。
    其中IIC的延时根据你的当前系统时钟等需要重新的调试。
3.IIC读写显示
    
8-Bit Read Sequence:
 
   做了已经半年多了,因此有很多东西都记不清了,希望这次能够简单的总结一下!
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jjjkl81/archive/2007/12/15/1939664.aspx
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jjjkl81/archive/2007/12/15/1939664.aspx

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多