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

28035的i2c只有四级深度的FIFO,page write方式写EEPROM时,按官方例程,把所有数据放FIFO然后发送的方式行不通啊

请教个问题,新手刚学page write方式写EEPROM时,按官方例程,把所有数据放FIFO然后发送的方式行不通啊,FIFO只有四级深度,数据比较长时会把前面的覆盖掉。

   I2caRegs.I2CCNT = msg->NumOfBytes+2;
   // Setup data to send
   I2caRegs.I2CDXR = msg->MemoryHighAddr;
   I2caRegs.I2CDXR = msg->MemoryLowAddr;
// for (i=0; i<msg->NumOfBytes-2; i++)
   for (i=0; i<msg->NumOfBytes; i++)
   {
      I2caRegs.I2CDXR = *(msg->MsgBuffer+i);
   }
这个例程里面I2caRegs.I2CDXR = *(msg->MsgBuffer+i); 这句话实现不了吧

user5007035:

开启了增强FIFO模式,往BUFFER里写,会通过指针自动填充到FIFO队列把,然后有个判断FIFO队列数据个数的中断,FIFO队列数据少了进中断填充再发,你难道想一次把所有数据都写上吗。。

请教个问题,新手刚学page write方式写EEPROM时,按官方例程,把所有数据放FIFO然后发送的方式行不通啊,FIFO只有四级深度,数据比较长时会把前面的覆盖掉。

   I2caRegs.I2CCNT = msg->NumOfBytes+2;
   // Setup data to send
   I2caRegs.I2CDXR = msg->MemoryHighAddr;
   I2caRegs.I2CDXR = msg->MemoryLowAddr;
// for (i=0; i<msg->NumOfBytes-2; i++)
   for (i=0; i<msg->NumOfBytes; i++)
   {
      I2caRegs.I2CDXR = *(msg->MsgBuffer+i);
   }
这个例程里面I2caRegs.I2CDXR = *(msg->MsgBuffer+i); 这句话实现不了吧

user4675816:

回复 user5007035:

TI的例程,使能了FIFO,但是却是用的I2CINT1A中断。如果XRDY_INT中断也使能,在中断中向发送BUFF填 入数据,FIFO就失效了,每发送一个8 bitXRDY_INT就会触发一次,这种情况下FIFO只有一级深度了,总之就是矛盾的。不知道I2CINT1A和I2CINT2A不知道能不能同时使能。我正在试

赞(0)
未经允许不得转载:TI中文支持网 » 28035的i2c只有四级深度的FIFO,page write方式写EEPROM时,按官方例程,把所有数据放FIFO然后发送的方式行不通啊
分享到: 更多 (0)