se050 i2c no ack when read

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

se050 i2c no ack when read

3,518 Views
m_c
Senior Contributor I

SE050C1HQ1/Z01SCZ

SE050 sometimes don't response READ command, NO ACK when running se05x_Get_Info.

i2c clock 360KHz.

Is that normal situation?

Labels (1)
0 Kudos
Reply
9 Replies

3,182 Views
Kan_Li
NXP TechSupport
NXP TechSupport

Hi m.c,

What is the platform/host controller with SE050? Would you please clarify?

Have a great day,
Kan


-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos
Reply

3,182 Views
m_c
Senior Contributor I

Ambarella S5L33M-A0-RH with Linux

0 Kudos
Reply

3,182 Views
Kan_Li
NXP TechSupport
NXP TechSupport

Hi m.c,

Thanks for the information! Referring to your snapshots of I2C transaction, looks like you write to 0x90 with 0x00 and then read from 0x90, right? Per I2C spec, the master read operation is as below:

pastedImage_1.png

Since you just read 1 byte, so there is a not-acknowledge following this byte as it is the last one.

Hope that makes sense,

Have a great day,
Kan


-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos
Reply

3,182 Views
m_c
Senior Contributor I

Customer using Linux i2c driver which will check ACK packet after sending request rigorously and print warning message if no ACK. By prevent see this warning, platform provider AMBA suggest add flag in the application when doing i2c read. Is there any cmake option can turn this on (enable I2C_M_IGNORE_NAK flag) or where to add this flag in the source code?

0 Kudos
Reply

3,182 Views
Kan_Li
NXP TechSupport
NXP TechSupport

Yes, cmake can be used to add this option, and you may use cmake-gui for that purpose, please refer to the following for details.

option — CMake 3.16.2 Documentation 

pastedImage_1.png

or if you prefer to add in the command line, please refer to the following for details.

How to set a CMake option() at command line - Stack Overflow 

Hope that helps,

Have a great day,
Kan


-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos
Reply

3,182 Views
m_c
Senior Contributor I

Customer had added the option in cmake file as below,
but unfortunately the issue still exist.
Please help correct if anything wrong about change.

As understanding is the flag I2C_M_IGNORE_NAK is used in read an i2c device while not the compile option.
Can you help check where to add this flag when read i2c device?

i2c-ack.gif

0 Kudos
Reply

3,182 Views
Kan_Li
NXP TechSupport
NXP TechSupport

The flag is set correctly, but this flag is not for MW of SE050, it is for the I2C driver of the Linux platform, for example, please refer to Linux source code: I2C_M_IGNORE_NAK identifier (v5.4.8) - Bootlin  , please make sure the i2C driver from linux is also compiled by the cmake in the same time, otherwise you might have to recompile the kernel. 

Hope that helps,

Have a great day,
Kan


-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos
Reply

3,182 Views
m_c
Senior Contributor I

Customer had confirmed that I2C_M_IGNORE_NAK is in linux kernel source code.
But don't know how to add the option I2C_M_IGNORE_NAK in cmake file.
There's no cmake file in linux kernel source code.
Please help provide a guide on how to add it.(Our linux kernel version is 4.9)

Customer also checked this with Amba,
Amba replied that need add the flag I2C_M_IGNORE_NAK in upper layer when read an i2c device.
Can you help check where to add this flag in read i2c device?

0 Kudos
Reply

3,182 Views
Kan_Li
NXP TechSupport
NXP TechSupport

Usually we run "make menuconfig" to enable any flag supported by the kernel, but if this flag is not supported by the menuconfig, you may add it manually referring to http://www.sprg.uniroma2.it/kernelhacking2002/en/course-notes/ConfigurationFlags.txt , or you just directly add this flag in the command line . Please refer to https://www.linuxquestions.org/questions/linux-software-2/how-do-i-pass-my-cflags-when-compiling-the...  for more details.

Hope that helps,

Have a great day,
Kan


-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos
Reply