No it is not helpful as it refers to (last) ACK/NACK.
This works for me but one clock cycle later the master does not create the Stop Condition.
If you are not using MDK-KEIL, please ignore following.
The problem I encountered at the thread
was not (last) ACK/NACK problem.
It was when assigning a byte to byte struct which comprises
multiple volatile bit fields (having ~8 x 1_bit bit fields) type/struct,
GCC, IAR spit a few mnemonics since it is an assignment of a byte,
but MDK-KEIL generates dozens of mnemonics since assigning
multiple volatile fields are prohibited.
(I think it was about 40~50 mnemonics)
And this made i2c timeout.
How about trying
(1) only assigning a bit field
pstcI2c->IBCR.SCC = 0x01;
(2) follow similar workaround shown in the thread