136***060
你好, TE.
在GR551x_SDK_V2.0.1 SDK下, 调用app_i2c_transmit_sync能得到预期结果; 相同硬件, 几乎相同代码(IIC初始化没完成相同)在 GR551x_SDK_V1.7.0 SDK下, 却只能看到设备地址的发送, 接下来的数据没有发送出去.
附代码, 这部分在两个SDK的工程都是完全相同的:
static s32 cx_Write(cx_Rsrc_T *r, const u8 cmd, u8* payload, u8 len){
u8 buff[64];
u8 addr,hdr[2] = {cmd, len};
s32 i,j;
uint16_t ret = 0;
i = cmd;
buff[0] = cmd;
buff[1] = len;
memcpy(&buff[2],payload,len);
ret = app_i2c_transmit_sync(APP_I2C_ID_0, CX_DEV_ADDR, buff, len+2, 2);
if(ret == HAL_OK){
ulog("<%s cmd:0x%02x >", __func__, cmd);
return 0;
}
ulog("</%s ctn73x_Write.err:0x%02x >", __func__, ret);
return -1;
}
这个是OK符合预期的波形, 在GR551x_SDK_V2.0.1 SDK工程下, IIC fre=400K:
这个是异常的波形, 在GR551x_SDK_V1.7.0工程下, IIC fre=400K:
谢谢
LGY
你好,
1)app_i2c_transmit_sync在GR551x_SDK_V1.7.0工程下返回值是多少?是否为HAL_OK
2)把入参timeout改为100试下?
136***060
返回值是0x01
LGY
GR551x_SDK_V2.0.1 SDK与GR551x_SDK_V1.7.0 SDK的一个典型区别在于对外设初始化参数所在的变量要求不一样:
V2.0.0及后续的版本,要求初始化参数所在的变量是全局变量;V1.7.0及以前的版本没有这个要求。
请检查一下是否这里的差异没做好?可否把初始化的关键代码贴出来看下。
打开微信,使用“扫一扫”即可关注