This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ISO1228: Data & address phase out of sync

Part Number: ISO1228

Tool/software:

Hello, in our product we changed from another vendor to TI's ISO. But with prototypes we found TI uses internal states between "unrelated" SPI transfers. We use ISO in SPI only non-daisy mode.

I mean "address" and "data" phases. It may happen that the CPU will come 'out of sync' with ISO chip. There are several reasons (not related to ISO).

Using RST pin will not help, since it is too slow.

So, my question is: how exactly does the state machine works for ADDRESS/DATA phase ? Just "like flip/flop" driven by CS - so we need to keep CPU in sync ?

Is there any way to 'reset' the machine or 'get' information about which phase it is ? Imagine there is a spurious 'CS' toggle for example (no CLK activity). In previous vendor 'CS UP' resets internal machine (as expected). But this chip (all others things works perfectly) adds internal state memory and this spurious toggle make chip out-of-order.

Any idea how to fix/proceed ? We can't guarantee sync with ISO forever and ever before power will be disconnected :)

There is nothing interested in the schematic, everything works well (r/w/inputs/...). Except falling out of sync. In this case 'CS' toggle solves the problem - but how to detect when.

As the result - we would like to 'read' internal state (address or data) or reset to 'address'.

Thank you !

  • Hello Lada, 

    Any idea how to fix/proceed ? We can't guarantee sync with ISO forever and ever before power will be disconnected :)

    This is a really good question. The RST pin can be used to clear the SPI register and reset the SPI interface internally. Based on your previous comment it looks like you have evaluated this, and it is too slow for your application. The next option would be to connect the SYNC to the MCU. This is discussed in section 4 of How to Dynamically Switch Between Serial and Parallel Modes Using ISO1228

    "Due to noise or any other fault, the ISO1228 can become desynchronized from the MCU. For example, the MCU is sending bits for the data phase while ISO1228 is still in the address phase (or vice versa). To solve this problem, the SYNC pin can be used to synchronize the MCU to ISO1228. The SYNC pin (pin 28) can change states to indicate the current phase of the ISO1228.

    • When SYNC = 1, ISO1228 is in the address frame

    • When SYNC = 0, ISO1228 is in the data frame and sending or receiving data bits

    If the MCU detects that the MCU is out of sync with ISO1228, the MCU can read the SYNC pin and then assert low at nRST to clear ISO1228's internal registers and start a new transaction.

    "

    Of course, the MCU can also, ignore the message and re-synchronize with the ISO and not use the RST function. 

    Let me know if this is an option for you.

    Best,
    Andrew

  • Hello, thank you for suggestion. I already saw that document (searched first), but didn't saw that paragraph. I was looking for images and SPI timing only. And there is no SYNC drawn. For some reason I expected all relevant signal to be present in the picture... Would be nice if the figure 4-1 (and also in product PDF) will include SYNC signal :)

    At the end I expected SYNC is used only for BURST mode (reg 0). This was also our plan B - switch to burst mode and lost 'write control'.

    So, if the SYNC can be used in non-burst mode, it fixes our problem. And as you pointed - it can be.

    Thank you for pointing that !

    R.