TI中文支持网
TI专业的中文技术问题搜集分享网站

关于TMS320F28035 IIC 的疑问

画了Example_2803xI2C_eeprom例程的状态机图,大家看看对不对

绿色是In message,黄色是Out message

例程使能了发送和接收FIFO,发送数据部分有如下语句:

// Setup data to send
   I2caRegs.I2CDXR = msg->MemoryHighAddr;
   I2caRegs.I2CDXR = msg->MemoryLowAddr;
// for (i=0; i<msg->NumOfBytes-2; i++)

{
      I2caRegs.I2CDXR = *(msg->MsgBuffer+i);
}

即连续对I2CDDXR寄存器进行4次写操作

请问使能发送FIFO以后,这样的连续写操作是把数据放到FIFO里面了吗?

接收过程是不是也是先进到FIFO里面呢?

user78960159:请大家帮忙看下我的理解对不对

画了Example_2803xI2C_eeprom例程的状态机图,大家看看对不对

绿色是In message,黄色是Out message

例程使能了发送和接收FIFO,发送数据部分有如下语句:

// Setup data to send
   I2caRegs.I2CDXR = msg->MemoryHighAddr;
   I2caRegs.I2CDXR = msg->MemoryLowAddr;
// for (i=0; i<msg->NumOfBytes-2; i++)

{
      I2caRegs.I2CDXR = *(msg->MsgBuffer+i);
}

即连续对I2CDDXR寄存器进行4次写操作

请问使能发送FIFO以后,这样的连续写操作是把数据放到FIFO里面了吗?

接收过程是不是也是先进到FIFO里面呢?

user5860441:看了两天,终于搞懂了心中的疑问。
1、利用IIC外设,在配置I2CMDR之前的设置都是向外设寄存器写数据,准备好,当配置了I2CMDR之后,外设开始工作,也就是读、写函数每次都是连续执行完,并更新了当前消息指针和状态。
2、AT24C1024的Word address有17bit包括P0和2 bytes的address。512页,每页256自己。前面9bits表示页地址,后面8bits表示页内字节地址,它会在每次读写一字节数据时,自动加1,遇到页尾,回到0,重新开始。
不同的EEPROM的Word address的位数不一样,造成容量不一样,有的只有8位,一次就可以把Word address写完,有的要分两次写,(多于16位的P0,和器件地址一起写的)
3、给的例程,并不通用,不同EEPORM,要做小修改。例程中利用了FIFO,但只有4级深度,连续读写多字节,也要修改程序。

画了Example_2803xI2C_eeprom例程的状态机图,大家看看对不对

绿色是In message,黄色是Out message

例程使能了发送和接收FIFO,发送数据部分有如下语句:

// Setup data to send
   I2caRegs.I2CDXR = msg->MemoryHighAddr;
   I2caRegs.I2CDXR = msg->MemoryLowAddr;
// for (i=0; i<msg->NumOfBytes-2; i++)

{
      I2caRegs.I2CDXR = *(msg->MsgBuffer+i);
}

即连续对I2CDDXR寄存器进行4次写操作

请问使能发送FIFO以后,这样的连续写操作是把数据放到FIFO里面了吗?

接收过程是不是也是先进到FIFO里面呢?

user5860441:

回复 user5860441:

例程写的不完整,比如写数据时和读数据的第二步,如果没有收到应答位,该怎么办,程序中没有。

赞(0)
未经允许不得转载:TI中文支持网 » 关于TMS320F28035 IIC 的疑问
分享到: 更多 (0)