I am designing a embedded system where a master microcontroller (or possibly a SoC) needs to communicate with several different sub modules with a microcontroller of their own. The sub modules should be hot swappable, uniquely identified, and the module type should be detected by the master. At least 16 sub modules must be supported. Each module needs a mechanism to notify the master of certain events.

Preferably I am looking for a bus based solution. I do not require a hight bandwidth (a few kbps is fine) and the latency is not critical.

For the sub-modules I have looked into a microcontroller in the EFM8 Laser bee family from Silicon Labs, where each chip contains a unique 128-bit id number for identification. But I am open for other suggestions.

I have looked into SMbus, and 1-Wire as alternatives for the communication bus. I have also looked at the LTC4300 Hot Swappable 2-Wire Bus Buffer, which I believe might be useful for SMBus?

I know that both SMbus and 1-wire have mechanisms for identification of slave devices, but I have still not looked into how I should implement the software.

My question is if there are any important issues with the solutions I have considered, and if there any other possible solutions I might have overlooked?

  • 2
    \$\begingroup\$ you are describing something like USB or PCIe \$\endgroup\$ – jsotola Jun 23 at 17:59
  • \$\begingroup\$ USB host on an 8-bit micro? I think not. \$\endgroup\$ – Jasen Jun 24 at 3:29
  • \$\begingroup\$ if the data rate is high enough 1-wire is probably your best bet, smbus is pretty-much I2C and so limits you to 127 pre-set addresses, but maybe you can figure out a way to do enumeration and anti-collision device detection on I2C \$\endgroup\$ – Jasen Jun 24 at 3:36
  • \$\begingroup\$ The reason why I considered SMbus is that it (unlike I2C) specifies a "Address Resolution Protocol" for automatic identification of new devices on the bus. 127 devices is more than sufficient for my application, but the specification (http://smbus.org/specs/) also mentions a 10-bit addressing scheme. \$\endgroup\$ – eirik Jun 24 at 12:20
  • \$\begingroup\$ Another option is CAN bus. It is rugged, hot-swappable (if designed right) and can handle longer distances. The down side is the increased complexity. As a side note, when designing new products in the year 2019, you should desperately avoid the following: 8051, 8-bit microcontrollers, Simplicity Studio, Eclipse. All four at once can only mean utter trash. \$\endgroup\$ – Lundin Jun 26 at 13:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.