There are at least three different manufacturers with "one wire" type memories:

  • Maxim/Dallas has "1-Wire"
  • Microchip has "Single-Wire"
  • TI has "SDQ"

Are they all compatible with each other?

I'm considering using the DS2480B to drive a 1-wire memory device with a standard serial port, but I don't want to be limited to Dallas/Maxim memory devices, as they are not the cheapest.

  • \$\begingroup\$ Did you already read any datasheets? or en.m.wikipedia.org/wiki/1-Wire. Why would you think these protocols are unified? Keep in mind the OSI layers. \$\endgroup\$ Sep 11 '18 at 19:54
  • 1
    \$\begingroup\$ I believe they might be the same because Octopart brings up the Microchip device as a "FFF equivalent" when searching for the Maxim/Dallas part, and appears to interchangeably label the devices as both "1-wire" and "One-Wire". The various tri-state GPIO port diagrams for all three look similar. The timing diagrams look similar. But I haven't had time to dig through the details of all the timnig, state diagrams, etc. so I ask to see of someone knows off the top of their head. \$\endgroup\$ Sep 11 '18 at 20:13
  • \$\begingroup\$ FFF is good info then. Beware some supplier max speeds or Zout may differ slightly. So trust but verify. \$\endgroup\$ Sep 11 '18 at 20:15

All of the devices you mention have the same enumeration protocol so the host can ID all devices that share a 1 wire line.

Also the same is that when no data is flowing the host (possible using a pull-up resistor) returns the data line to logic '1', which allows the devices to charge up enough to communicate.

At the start the host issues a reset by holding the data line low for 10 us. This resets all devices and prepares them for enumeration.

The data packet is always 64 bits or 8 bytes. The LSB is the ID of the device and the MSB is the CRC code of the data sent. Unused bytes are set to zero.

That is all that is common about 1 wire devices. The data itself is arbitrary and has no set protocol for all devices, but all data packets must include a device ID and a CRC checksum. This way the host can separate many devices wanting to send data and it can recognize each device. A collision results in a device waiting so many us or ms and trying again. Per this wiki link 75 devices per second can send/receive data with the host if data is sent as 1 packet each.


Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.