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: Looking for advice on planned implementation with mixed communications modes.

Part Number: ISO1228
Other Parts Discussed in Thread: TCA9539, TCAL9539

Tool/software:

Hi everyone:

I'm in the process of updating our old design and I'm considering using 2 units of ISO1228. I would like, if possible, to get some feedback around the way I'm trying to solve the implementation, in case there is a better way to do it and to solve some questions I have about it.

My principal design restriction is that I need to get at least 4 inputs with interrupt capabilities on my uC as the signals may appear every 62.5 uSec lasting for about 1 uSec (Those are kind of tachometers).

My initial estimations say that I can continuously poll the two devices via SPI in a Daisy Chain connection and my uC would get a representation of the state of the inputs including the "tachometers". But also - to be more precise - I could relay on the state of the INT pin to issue a register read via SPI before missing the signals. However all that would require a profound change in my uC firmware that currently relies on simple interruptions which are very accurate.

At the same time it seems to me that it would be a waste not taking advantage of ISO1228 perks of being able to set individual filters for every channel and its ability to determine the error condition of every channel. For that I need SPI communication in conjunction with parallel.

Assuming I would be able to find enough IOs on my uC (a TIVA TM4C123), please help me to determine if I'm correct with the following:

  • For the ISO1228 that would have the interrupts I would need:
    • The 8 OUTx pins (Which also include the 4 SPI pins)
    • To account for a pin for COMM_SEL to conmute between SPI and parallel communication. At start I need to configure the device with the Filters, parallel comm is needed at runtime, and I would need to switch to SPI in case I need to determine the reason of the fault or the state of the wires.
    • A Pin for nFAULT is required to determine when to switch to SPI.
    • OUT_EN is not needed, right? It is not clear to me when this could be useful? I understand that the outputs are enabled by COMM_SEL, then, what is the use of OUT_EN?
  • For the other ISO1228 that does not need interrupts:
    • The 4 SPI pins are required, although it can't be the same port on the uC as the previous ISO1228 will occupy it with the output status at runtime.
    • The COMM SELECTION would be fixed to VCC1 as no comm switching is necessary.
    • Burst won't be implemented, as I need to share the SPI with other peripherals. Then BURST_EN and SYNC are not required.
    • nINT would not be necessary as I would be polling the device continuously.
    • nRST could be needed at any point? I'm not clear when would it be necessary. Let's say If there is the need to reset the comm, Won't bt the CS on the SPI will take care of resetting the communication?

Any guidance on this would be very much appreciated.

Thank you!

  • Hello Maricio, 

    Thank you for reaching out. We are happy to help. I understand that you are looking to configure two ISO1228s to switch between serial-SPI and parallel mode if any fault conditions are found.

    For the ISO1228 that would have the interrupts I would need:

    I agree that for your application the microcontroller would need 10 I/O pins. This would include the 8 OUTx pins, COMM_SEL and nFAULT (an OR gate can be used to combine the two ISO1228s' pins). OUT_EN does not need to be used. It is provided to add flexibility to tristate the OUTx pins during a transition or to save power in an idle state. They can also be used when sharing the datelines with another ISO1228 or MCU.   

    For the other ISO1228 that does not need interrupts:

    The implementation you have mentioned above makes sense. CS will alternate the ISO1228 between the address phase and the data phase. If the ISO1228 gets out of sync (by a transient noise pulse, for example), the MCU could assert nRST. Otherwise, it would need to wait to clear the failed packet.

    SYNC and nRST are not needed for normal operation. However, they are useful to quickly detect and clear the SPI data in the event of an error.

    One additional thought. While OUT_EN is not directly needed. It could be used on the 2nd device to tristate the outputs when an interrupt is on the 1st device. This would allow the 2nd device to share the SPI. 

    Please follow up if you have more questions. 

    Best,
    Andrew

  • Hi Andrew!

    Thank you for your response. I now see the benefit of OUT_EN helping to share the SPI lines between both devices. And I also see how having all the other pins implemented could provide flexibility on my design. 

    I will check a port expander like TCA9539/TCAL9539 as it would help me to deal with all those pins using I2C.

    Again, thank you! You have been very helpful.

  • No problem! Please reach out again if you have further questions. 

    -Andrew