IGNACK behavior on S32K14x

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

IGNACK behavior on S32K14x

跳至解决方案
1,475 次查看
Joey_van_Hummel
Contributor IV

My previous post on this got marked as spam and deleted (why?) so I'll try again.

 

Hi all,

When LPI2C master IGNACK is set, I am still seeing NDF set on NACKs and new start condition is not possible. 

I need to clear NDF to start new frames, even though IGNACK is set to 1.

Is this expected behavior?

 

Kind regards,

Joey

0 项奖励
回复
1 解答
1,406 次查看
Senlent
NXP TechSupport
NXP TechSupport

Hi@Joey_van_Hummel

Thanks for reminding me, I actually saw IGNACK this errata.Senlent_0-1751262581075.png

So, your guess is right,

https://www.nxp.com/products/S32K1

Senlent_2-1751262750789.png

 

 

 

在原帖中查看解决方案

0 项奖励
回复
5 回复数
1,418 次查看
Senlent
NXP TechSupport
NXP TechSupport

Hi@Joey_van_Hummel

Sorry to keep you waiting. I don't know why your previous post was marked as spam. It was not marked manually, but automatically by the system.

 

Regarding your question, I think the following situation may cause your situation.

First, let's look at the description of the NDF register:

Senlent_1-1751253395034.png

From this sentence, we can know that if we set it at the beginning to expect to receive NACK, but we did not receive NACK, then the NDF bit will also be set.

For example, if we set CMD to expect to receive NACK, but we actually received ACK, then NDF will be set. At this time, you need to manually clear the NDF bit to start a new transmission.

Senlent_0-1751253366098.png

The above is my understanding, you can check the CMD settings, this may be the cause of the problem.

0 项奖励
回复
1,409 次查看
Joey_van_Hummel
Contributor IV

Hi @Senlent,

Thanks for your reply, I appreciate your time. I am referring to bit IGNACK in register MCFGR1.

See the following description:

Joey_van_Hummel_0-1751260534465.png

It was my assumption that the receiver mechanism would not flag NDF and would not prevent start/stop under any circumstances if IGNACK is set. 

This is also written further in Functional Description, under section 52.3.2.5 Error Conditions which states:

The LPI2C master will monitor for errors while it is active, the following conditions will generate an error flag and block a new START condition from being sent, until the flag is cleared by software:

- NACK is detected when transmitting data, and MCFGR1[IGNACK] is clear (sets MSR[NDF]).

- NACK is detected and is expecting ACK for the address byte, and MCFGR1[IGNACK] is clear (sets MSR[NDF]).

- ACK is detected and is expecting NACK for the address byte, and MCFGR1[IGNACK] is clear (sets MSR[NDF]).

My conclusion is that IGNACK does not work as the RM describes, hence my wondering if this is expected behaviour or perhaps an erratum.

I am using normal Transmit Address and Data commands (100b and 000b).

Kinds regards,

Joey

0 项奖励
回复
1,407 次查看
Senlent
NXP TechSupport
NXP TechSupport

Hi@Joey_van_Hummel

Thanks for reminding me, I actually saw IGNACK this errata.Senlent_0-1751262581075.png

So, your guess is right,

https://www.nxp.com/products/S32K1

Senlent_2-1751262750789.png

 

 

 

0 项奖励
回复
1,401 次查看
Joey_van_Hummel
Contributor IV

Hi @Senlent,

 

Thank you for confirming. I had found an old version of the erratum document which doesn't list this erratum.

I see that there are new versions which do list the problem.

Thank you for clearing this up and showing me the new erratum data. I've implemented the proposed workaround and that works.

 

Thanks again for your time,

Kind regards,

Joey

0 项奖励
回复
1,399 次查看
Senlent
NXP TechSupport
NXP TechSupport

Hi@Joey_van_Hummel

You're welcome,

0 项奖励
回复