Post Go back to editing

Multiple ADIN1110 on one microcontroller

Thread Summary

The user is experiencing issues when initializing multiple ADIN1110 devices on a single microcontroller, where the second device overwrites the configuration of the first and causes data transmission failures. The solution involves using different BSP read/write callbacks for each driver instance, mapping the corresponding SPI read/write callback to the hDevice instance during HAL initialization. Additionally, the user must specify unique GPIO pin numbers for the INT_N interrupts and register separate link change callbacks for each device instance.
AI Generated Content
Category: Software
Product Number: ADIN1110

I am currently working on a project where I would want multiple ADIN1110's connected to a single microcontroller in order to talk to multiple edge nodes at one time.  However, there seems to be a problem when initializing the second ADIN1110.  When the second one is brought online, it overwrites the configuration of the previous one and reports that the link is down.  Also, transmission of data returns a fail.  I am assuming that this is some sort of driver issue where the second object of the adin1110 class is using memory that the first object uses, causing an overwrite.  Any help would be greatly appreciated.

Parents
  • Hi,

    Can you please send us a diagram of your system?

    Regards,

    Raquel

  • Hello,

    I have included below a general diagram of how I have the devices connected.  There is a general SPI bus that is shared between the devices.  However, each ADIN1110 has its own GPIO pins on the MCU for things such as CS, RST, etc.

  • Hi,

    Have you checked with a digital probe if when doing a write to device 2, CS1 is going low? Device 1 should be ignoring the SPI unless its CS is low during that time.

    Are you using our no-OS device drivers? In that case, have you ported the BSP to your particular board?

    Regards,

    Raquel.

  • Hello,

    I have included a picture below of an oscilloscope reading connected to both of the chip select pins during initialization of the ADIN1110s.  As you can see, the chip select lines are only low when the MCU is sending data, then it is pulled high again.

    As for the drivers, yes, I am using the no-OS drivers.  I am using one of Sparkfun's boards for this project and am using their BSP file that they created for it.  The problem I am having is that the device reports that the boards have been initialized properly, yet when polling the link status of both of the boards, board1, which was initialized first, reports no link.  After some testing, I realized that whichever board is initialized first, will report the link down.  I have a feeling that there is some shared memory problems and the board that is initialized second, is overwriting the memory of the first board.

Reply
  • Hello,

    I have included a picture below of an oscilloscope reading connected to both of the chip select pins during initialization of the ADIN1110s.  As you can see, the chip select lines are only low when the MCU is sending data, then it is pulled high again.

    As for the drivers, yes, I am using the no-OS drivers.  I am using one of Sparkfun's boards for this project and am using their BSP file that they created for it.  The problem I am having is that the device reports that the boards have been initialized properly, yet when polling the link status of both of the boards, board1, which was initialized first, reports no link.  After some testing, I realized that whichever board is initialized first, will report the link down.  I have a feeling that there is some shared memory problems and the board that is initialized second, is overwriting the memory of the first board.

Children
No Data