¿Cómo puedo escanear un bus One-Wire (1-Wire) para todos los dispositivos conectados y enumerar sus ID?

2

He escrito un controlador de un cable (1-Wire, OW) en VHDL para diseños FPGA. Actualmente utilizo un adaptador USB-OW de Dallas / Maxim en mi PC para obtener las ID de los sensores. Me gustaría escanear el bus directamente desde el FPGA y recopilar todas las ID en ese bus.

¿Cómo puedo hacer esto? Debería ser posible, ya que el software enviado desde el adaptador USB puede enumerar todos los dispositivos en el bus.

Enumerar todos los dispositivos es lento, porque OW tiene ID muy largas. Utilicé esta técnica en I²C, porque solo hay 127 direcciones para escanear :).

    
pregunta Paebbels

2 respuestas

5

Maxim tiene una nota de aplicación titulada Algoritmo de búsqueda 1-Wire :

La estrategia es demasiado complicada para describirla con precisión aquí, pero el principio básico se basa en:

  • 1-Wire es un bus de drenaje abierto: varios dispositivos pueden tirar del bus a GND simultáneamente.
  • 0 s se codifican como pulsos bajos largos, 1 s como pulsos bajos cortos (en realidad no tirando del bus bajo). Si varios dispositivos escriben el mismo bit en el bus, ese bit aparece en el bus. Si algún dispositivo escribe un 0 en el bus, aparece un 0 .
  • como respuesta al comando Search ROM de 1-Wire, todos los dispositivos (seleccionados), poco a poco, primero escribirán su propio bit de ID \ $ A_i \ $, seguido del bit de ID invertido \ $ \ bar {A_i} \ $. Luego, el maestro escribe un bit \ $ S_i \ $, que seleccionará los dispositivos para los siguientes bits.

Según estas propiedades, el maestro puede detectar si

  • no hay dispositivos seleccionados presentes: tanto \ $ A_i = 1 \ $ como \ $ \ bar {A_i} = 1 \ $.
  • los dispositivos con un 0 como bit de ID están presentes: \ $ A_i = 0 \ $
  • los dispositivos con un 1 como bit de ID están presentes: \ $ \ bar {A_i} = 0 \ $

De esta manera, puedes ver qué bits todavía están disponibles en tu espacio de búsqueda, y progresar hacia abajo en ese árbol binario.

    
respondido por el corecode
1

Esta hoja de datos de DS1820 explica la "búsqueda de ROM" en la P 10.

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas