TI中文支持网
TI专业的中文技术问题搜集分享网站

DLP4710EVM-LC: 关于开发使用cyusbserial.dll 的64位库的问题,调用读命令CYPRESS_I2C_ReadI2C一直失败需要如何处理?

Part Number:DLP4710EVM-LC

TI工程师您好,

我目前用QT(开发环境:Qt 5.12 + MSVC2017 64bit  Release)对光机GUI的一些功能进行移植开发,在官网上获取了cyusbserial.dll 的64位库,但调用读命令CYPRESS_I2C_ReadI2C一直失败。

1—-我将samples的.c代码添加到Qt中的cpp调用。 如图1

                                                                                          图1

2—-调用写命令CYPRESS_I2C_WriteI2C 会成功,但调用读命令CYPRESS_I2C_ReadI2C 都失败了。如图2

                                                                                         图2

3—-为了方便查看,我已在代码中加上打印查看返回值。QT环境中调用 Write 命令都是成功说明调用库成功了,但 Read 命令却一直返回失败。如图3

4—-我另外在VS2017环境下运行samples项目(纯C)做了测试,使用该64位的库是没问题的。如图4 图5

      

                                  图4                                                                                                                                  图5

因此,请问我需要在Qt环境下使用该接口,需要如何处理?

Jeremy_Wu:

这是QT兼容性的问题,使用32位测试是否有问题?

Cypress 32位是TI用VS2017测试过的,QT也先用32位测试。

请提供QT代码我们对比测试。

你这里是QT读有问题ReadI2C(先写后读,里面的写返回对,表示写出去了,但是s_Handle是64位),因此WriteI2C也没有测试一定可以。

看看下面到哪一步有问题?(测试32位s_Handle是否一样?)

bool CYPRESS_I2C_ReadI2C(uint32_t ReadDataLength, uint8_t* ReadData){ CY_DATA_BUFFER ReadBuffer; CY_RETURN_STATUS Status;

ReadBuffer.buffer = ReadData; ReadBuffer.length = ReadDataLength; ReadBuffer.transferCount = 0;

Status = CyI2cRead(s_Handle, &s_DataConfig, &ReadBuffer, I2C_TIMEOUT_MILLISECONDS); if ((Status != CY_SUCCESS) && (Status != CY_ERROR_IO_TIMEOUT)) { //printf("Read I2C Error %d!!! \n", Status); CyI2cReset(s_Handle, false); CyI2cReset(s_Handle, true); return false; }

return true;}

,

zr z:

你好,

1、我用32位测试了也不行(无论Debug或Release),CYPRESS_I2C_WriteI2C和CYPRESS_I2C_ReadI2C读写命令都会失败,反而64位CYPRESS_I2C_WriteI2C会成功。

2、另外,我有试过用vs编译你们提供的dlpc347x_samples项目  release版本如果C/C++ 全程序优化选择是也会出现问题。

所以我猜测是否跟qmake的默认优化机制有关,你们提供的库是否不支持qmake优化。

目前仍无法解决这个调用问题

附QT代码:

链接:pan.baidu.com/…/1act1yj5DuVTAqMwCrYGb8g

提取码:bz7s

,

DLP_Tech:

你好,或许可以交流一下,方便的话可以私聊

18501375210

,

meng shuai:

此问题一般为I2C接口问题,可以排查编译器的设置等

,

meng shuai:

此问题之前处理过,可以在线帮你们看看

,

Jeremy_Wu:

有几位第三方设计工作者协助。

使用VS版本的Debug 64位是否可以YPRESS_I2C_WriteI2C和CYPRESS_I2C_ReadI2C读写命令都可以?

这是第一步。

再移植到QT.

VS 32位是肯定没有问题的。

赞(0)
未经允许不得转载:TI中文支持网 » DLP4710EVM-LC: 关于开发使用cyusbserial.dll 的64位库的问题,调用读命令CYPRESS_I2C_ReadI2C一直失败需要如何处理?
分享到: 更多 (0)