问题描述
我是 atmel / microchip studio 的新手,正在尝试使用 I2C 与从设备通信。 I2C传输命令的HAL库或ASF框架如下。
int32_t i2c_m_sync_cmd_write(struct i2c_m_sync_desc *i2c,uint8_t reg,uint8_t *buffer,uint8_t length)
{
struct _i2c_m_msg msg;
int32_t ret;
msg.addr = i2c->slave_addr;
msg.len = 1;
msg.flags = 0;
msg.buffer = ®
ret = _i2c_m_sync_transfer(&i2c->device,&msg);
if (ret != 0) {
/* error occurred */
return ret;
}
****msg.flags = I2C_M_STOP;
msg.buffer = buffer;
msg.len = length;
ret = _i2c_m_sync_transfer(&i2c->device,&msg);
if (ret != 0) {
/* error occurred */
return ret;
}****
return ERR_NONE;
}
问题是四星之间的代码(****)传输了一个不需要的帧,因此,从站行为异常。所需的帧在代码星形部分上方的代码部分中正确传输。如果注释星号部分,则代码无法正常工作。有什么解决办法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)