总线技术|接口技术
直播中

abdkjshd

8年用户 1168经验值
擅长:可编程逻辑
私信 关注

cyu3pi2creceiveBytes函数调用无法正常工作的原因 ?

1。cyu3pi2creceiveBytes 函数调用无法正常工作。
2。使用相同的开发板和函数,在应用 cdc 接口之前看到 i2c 读取操作在代码中表现良好,我怀疑当前版本的代码存在问题。

我正在尝试通过 FX3 UVC + CDC 接口组合中的 COM 端口发送串行数据,并使用该串行数据执行 i2c 通信


例如,如果我想在从站地址为 0x18 的设备的寄存器地址 0x0001 中写入值 0x0003,我会通过串行通信发送五个字节的 [0x18、0x00、0x00、0x01、0x00、0x03],然后我将这五个字节作为 SensorRead 函数的一个因子发送,然后我配置前导码。

在以前不使用 CDC 的配置中,i2c 功能和主板运行正常,但是通过应用 CDC 修改的代码无法正常执行 i2c 读取操作。
为了读取 i2c,我发送了相应的串行数据(Python),甚至检查了是否向 fx3 中的函数传输了正确的值。 但以下是串行日志。
必须从 0x01 的地址中读取 0x0001,但会返回 0xFFFF 的值。
它还会重复 ApiretStatus 值 0 和 1。
导致这种现象的原因有哪些?

附上了 uvc.c 代码。

                                                                                                                                                                                                                                                                                                                                                                                          
                                                        

回帖(1)

的乏味而

2024-2-23 16:03:49
原因可能有几种:

1. 函数参数错误:检查函数参数是否正确传递。确保传递的参数包括正确的I2C从设备地址、寄存器地址和接收字节数。

2. I2C初始化问题:如果I2C接口没有正确初始化,那么函数调用可能无法正常工作。确保在调用cyu3pi2creceiveBytes函数之前已正确初始化I2C接口。

3. I2C通信问题:可能存在I2C通信问题,如信号线连接不良、时钟速率设置错误或I2C总线上其他设备干扰。可以通过在调用cyu3pi2creceiveBytes函数之前进行一些简单的I2C读取测试来诊断这些问题。

4. 错误处理问题:确保函数在出现错误时进行适当的错误处理。可以查看函数的返回值以判断函数是否成功执行。如果函数返回错误代码,则可能需要进一步分析错误原因。

建议逐步排查问题,逐步检查和调试相关代码,以确定导致函数调用无法正常工作的具体原因。可以使用调试器或添加一些调试信息来帮助确定问题所在。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分