About CY7C65215 using CypressUsbSerial linux sdk sample to control the I2C device

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
liHu_4787736
Level 1
Level 1

你好:

     目前使用Cypress CY7065215 USB to Uart Bridge chip ,使用官网下载的CyUSBSerial_SDK_Linux.zip 示例,在linux平台,通过usb接口控制TI Evaluation unit (DLPDLCR3010EVM), 发送简单的十六进制I2C数据,遇到的问题如下:可以正常连接该设备,但是写入数据(I2C slave地址和数据根据TI Programmers Guide) 返回NAK.

请问使用该示例的时候需要注意哪些地方,host端发送的usb 数据,桥接器会自动转成I2C格式吗?

如图是使用tcpdump抓取的usb报文和执行示例的打印错误,请帮忙看一下,谢谢!

期盼回复.

pastedImage_6.png

0 Likes
10 Replies
liHu_4787736
Level 1
Level 1

如图为示例打印错误log.

pastedImage_0.png

0 Likes
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

请问您是如何向CY7C65215发送USB数据的?

在你所贴出的SDK中,有相应的API读写I2C:CyI2cRead CyI2cWrite

0 Likes

感谢您的回复.

就是通过两个API 读写的。

前面CyOpen() 我认为是正常的,但是CyI2cWrite 数据写了之后也打印了CY: Successfully written i2c data.. 2 bytes written ...

但是在该API内部有waitForNotification()函数发送了一个interrupt类型的传输,读到的i2cStatus是包含了错误的返回值,而且实际设备也未能做出相应的设置反馈.

FILE: cyi2c.c, LINE: 426: wValue is 1b01 wIndex=3

FILE: cyi2c.c, LINE: 430: ^^^^^^^^^^ I2C get status 80 0 0 0^^^^^^^^^^

FILE: cyi2c.c, LINE: 470: CY: Successfully written i2c data.. 3 bytes written ...

FILE: cyi2c.c, LINE: 472: ##### bytesPending=3 ioTimeout=500

FILE: cyi2c.c, LINE: 630: ####### interrEndpoint:131

FILE: cyi2c.c, LINE: 648: CY:Info successfully recieved data on interrupt pipe length is 3

FILE: cyi2c.c, LINE: 651: Bytes pending is a5 3 0

FILE: cyi2c.c, LINE: 70: CY:Error Nacked by device ...Function is handleI2cError

Write I2C Error 17!!!

Write I2C Error!!!

想咨询一下,这个读写时是否需要做一些usb to i2c的数据转换?

0 Likes
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

buffer的数据就是实际写入I2C slave的数据。请问您读I2C可以成功吗?

0 Likes

读也不成功。显示为同样的错误,数据也未能正确读到.(读的是DeviceID.)

CyI2cRead 310 rStatus=0

FILE: cyi2c.c, LINE: 319: CY: Successfully read i2c data.. 0 bytes Read ...

FILE: cyi2c.c, LINE: 630: ####### interrEndpoint:131

FILE: cyi2c.c, LINE: 648: CY:Info successfully recieved data on interrupt pipe length is 3

FILE: cyi2c.c, LINE: 669: Bytes pending is 25 1 0

FILE: cyi2c.c, LINE: 70: CY:Error Nacked by device ...Function is handleI2cError

0 Likes
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

您看我们SDK目录下有个testUtility,这个程序代码上是肯定没有问题的,如果还是无法读写那就需要您检查下您读写的设备的问题了。

0 Likes

设备应该是正常的,因为在windows 可以通过usb接口用设备的控制软件正常控制。也通过Cypress-USB-Configuration Utility设置了模式。

另外您说到这个testUtility, 想咨询一下这里的参数。

3: Enter I2C/SPI Flash page address and length to write/read.

这里的page address是指的什么?

谢谢您的答复。

0 Likes
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

我看了一下代码,这个page address是buffer的第一个字节

0 Likes

length = readWriteLength;

    wbuffer[0]= pageAddress;

    wbuffer[1] = 0;

    dataBufferWrite.buffer = wbuffer;

    i2cDataConfig.isStopBit = true;

    dataBufferWrite.length = (length + 2);

这儿假设I2C数据 正常可接收的数据是3个字节,0x0b, 0x80,0x20.

则pageAddress设置未0xb, length为1, wbuffer[1]这儿需要修改的吗?

我这边测试显示

Data that is written on to i2c ...

-----------------------------------------------------------------

b 80 30 0

-----------------------------------------------------------------

FILE: cyi2c.c, LINE: 417: wValue is 3601

FILE: cyi2c.c, LINE: 423: CY:Error ... Device busy ... function is CyI2cWrite

这I2C数据是根据设备控制软件debug log得到的发送数据,除去slave address, 还有时钟设置之外,其他可能的原因导致无法写入的,有哪些?

请帮忙排查列一下,我都尝试一下,谢谢!

0 Likes
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hi,

麻烦您抓取一下I2C的波形,和slave device的手册比对一下

0 Likes