在做I2C实验的时候,对I2C接口的速度设置如下:<br />uint32 I2C0Init(uint32 FI2C,uint8 sladdr,void (*ISRPORT)())<br />{<br /> if(FI2C <= 400000){<br /> PINSEL0 |= SCL0 | SDA0; //定义管脚功能;<br /> //创建I2C接收缓冲<br /> QueueCreate(&pI2cReceiveBufQ,&I2cReceiveBuf[0],I2C_RECBUF_LEN,NULL,NULL);<br /> <br /> I2C0CONCLR = SBIT_AAC | SBIT_SIC | SBIT_STAC | SBIT_I2ENC;//清空控制寄存器.<br /> I2C0SCLH = (Fpclk / FI2C + 1) / 2;<br /> I2C0SCLL = (Fpclk / FI2C) / 2;<br /> <br /> I2C0ADR = (uint32)sladdr;<br /> I2C0CONSET = ENI2C|ENAA;<br /> <br /> VICVectCntl14 =EN_IRQslot | VIC_NO_IIC0;<br /> VICVectAddr14 = (uint32)ISRPORT;<br /> VICIntEnable |= _BV(VIC_NO_IIC0); <br /> return TRUE;<br /> }<br /> else return FALSE;<br /><br />}<br /><br />调用的时候我设置了400K,可写入16个字节感觉上要用去3、4秒的时间。。<br /><br />还有数据手册135页有这样一段话。I2C 接口完全符合整个I2C 规范,支持断开到LPC2141/2/4/6/8 的连接而不影响同一I2C<br />总线上的其它器件(见“快速模式”标题下的“I2C 总线规范”描述,和微控制器数据手册<br />中标题为“F/S 模式的I2C 总线器件的SDA 和SCL I/O 特性”的表格注释)<br /><br />快速模式指的是I2C吗。。在哪可以看到。。?? |
|