目前通讯双方分别使用psoc designer的EzI2Cs和I2Cm模块,之前的程序是从机EzI2Cs一直发数据,I2Cm主机一直循环读取数据。现在需要改一下,需要I2Cm主机给EzI2Cs发数据并修改从机的设置。但是EzI2Cs中根本找不到数据读取的API,我尝试用I2Cm主机发给从机数据后,那么I2Cm从总线上读取的数据会被跳过一个字节,也就是主机从从机读取的数据,第一个字节被省略掉了,直接从第二个字节开始读的。总结就是两个问题:
1.EzI2Cs怎么获得并读取I2Cm发送过来的数据?并且怎么保证总线上发送和收取的数据不会冲突和被覆盖?
2.I2Cm向总线上发送数据后再从总线上读取数据为什么会跳过一个字节直接从第二个字节开始读取?
下面贴上I2Cm循环代码:
while(1){
status = I2Cm_fReadBytes(0x51,rxBuf,8,I2Cm_RepStart);
if(status == 0) {}
while (!USBUART_bTxIsReady()); //If TX is ready
USBUART_Write(rxBuf,0x09);
I2Cm_bWriteCBytes(0x51,txCBuf,2,I2Cm_NoStop );
}
求谁教教我要怎么弄,如果有相应的例子也行,感激不尽! |