I2C总线的软件程序模拟—基于Niso II处理器

本文详细介绍了如何在Nios II处理器上模拟I2C总线,包括I2C的特点、信号类型、读写时序,并给出了启动、停止、应答检测、数据读写的C函数实现。
摘要由CSDN通过智能技术生成

I2C总线的软件程序模拟基于Niso II处理器

1I2C的特点

   I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
2、I2C信号种类

   I2C有3种类型的信号,分别是开始信号、结束信号、应答信号。

   开始信号:SCL为高电平,SDA由高电平向低电平跳变,开始传输数据;

   结束信号:SCL为高电平,SDA由低电平向高电平跳变,结束传输数据;

   应答信号:SCL为高电平,SDA为低电平,表示一个字节数据接收或发送完毕;

   还有一种是非应答信号,即SCL为高电平,SDA为高电平,一般应用于数据读操作结束。

3、I2C读写时序

   写时序:①向总线发出需要写数据器件地址和写信号并等待应答信号;②向总线发送写地址并等待应答信号;③向总线发送所要写的数据并等待应答信号;④主节点产生结束信号,完成写操作。

   读时序:①主节点向总线发送需要读取数据器件的地址和写信号并等待应答信号;②主节点向总线发送随机的数据地址并等待应答信号;③主节点向总线发送需要读取数据器件的地址和读信号并等待应答信号;④接收数据,接收完成后产生非应答信号与结束信号,完成读操作。

4、具体程序分析

/********************************

 * 函数名称: start()

 * 函数功能: I2C启动

 * 输入参数:

 * 返回值 

 *******************************/

staticvoid start(void)   

{

    IOWR_ALTERA_AVALON_PIO_DIRECTION(RTC_SDA_BASE, 1); //1指‘写’0指‘读’

IOWR_ALTERA_AVALON_PIO_DIRECTION(RTC_SCL_BASE, 1);

    IOWR_ALTERA_AVALON_PIO_DATA(RTC_SDA_BASE, 1);

    IOWR_ALTERA_AVALON_PIO_DATA(RTC_SCL_BASE, 1);

    usleep(10);

    IOWR_ALTERA_AVALON_PIO_DATA(RTC_SDA_BASE, 0);

    us

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值