这几天调试IIC从机,官方的资料倒是全,但仅仅是全而已了,很多关键没提及,成功还好了,不成功那就不知道怎么办了。
我以蓝牙模块作为从机,其它单片机作为主机。保证主机IIC格式的正确情况下。以IIC标准格式给蓝牙模块发送了数据:
比如 S + SLAVEADDR/wr +S_ACK +DATA+S_ACK+P 但是蓝牙模块IIC从机只响应了 SLAVEADDR/wr(从机地址),也就是红色部分响应了一次应答,后面数据收发都失败了。例子照搬Driver 例子里面的I2C,多次检查,没发现那里没配置的。而我主机端跟别的IIC从器件通信正常(EEPROM芯片)。
跑的是全系统,包括协议栈?如果是请注意睡眠问题,建议在裸驱下调好再加入。
FireBLE_blue 发表于 2015-5-28 09:19
跑的是全系统,包括协议栈?如果是请注意睡眠问题,建议在裸驱下调好再加入。
不是,是driver,不包括协议栈和内核。就是driver example 里面的iic例子。
没摸索过从机的iic
#define I2C_MODE I2C_SLAVE //I2C_MASTER /*!< Config I2C Mode: Master or Slave */
楼主解决了吗。
lovefirstly 发表于 2015-5-28 23:17
楼主解决了吗。
没解决,代码完全检查了,没发现问题。
你的iic 主机读的时序是怎样?直接用eeprom 程序来调试吗?
FireBLE_blue 发表于 2015-5-29 14:30
你的iic 主机读的时序是怎样?直接用eeprom 程序来调试吗?
S 从机地址 A data A p
EEprom要写从机地址和寄存器地址,我这个不用,只发从机地址,得到应答后就发数据了