¿Existe un protocolo de bus I2C/SM estándar para paquetes de baterías de portátiles?

Estoy construyendo una computadora portátil con un paquete de batería personalizado. Sé que el paquete tiene que comunicarse a través de un puerto I2C/SM en la placa base, pero no sé cómo hacer que el bios/os lo reconozca. ¿Existe una dirección I2C particular y un protocolo estándar además de I2C para el intercambio de información del estado de la batería? Si lo hay, ¿dónde puedo encontrar la documentación? Si no, ¿el protocolo es propiedad del fabricante de la BIOS y luego el sistema operativo lo lee desde la BIOS? Estaré bitbanging I2C desde el microcontrolador que regula la batería para que pueda hacer lo que sea necesario.

Respuestas (2)

Como ya conoce el SMBus, ¿por qué no busca en la Especificación de datos de batería inteligente o la Especificación de cargador de batería inteligente , ya que esto es lo que tendrá que simular? Sin embargo, esto no describirá si el chip de administración del sistema tiene algunas características adicionales que no están documentadas ;-)

No hay un estándar real. [Editar: estoy equivocado en eso - ver otra respuesta]

Sin embargo, la mayoría de las baterías se fabrican más o menos de la misma manera: tienen algún chip EEPROM I2C (a menudo uno estándar de la industria) que contiene toda la información estática sobre la batería (modelo, número de serie, fecha de fabricación, capacidad, etc.). ..), y otro chip llamado "indicador de carga de la batería" o "indicador de combustible de la batería" que monitorea el nivel de carga real y todo el material dinámico.

TI tiene una gama completa de chips de indicadores de batería disponibles: http://www.ti.com/lsds/ti/power-management/battery-fuel-gauge-overview.page . Lo más probable es que la batería de su computadora portátil contenga dicho chip.

Entonces, básicamente, solo el fabricante de la computadora portátil sabe exactamente cómo comunicarse con la batería, pero todo generalmente se basa en chips ampliamente disponibles y documentados (bueno, también puede haber alguna MCU adicional con firmware propietario que se encargue de cosas adicionales, eventualmente ). Entonces, si debe aplicar ingeniería inversa a una batería, es posible que tenga alguna posibilidad de tener éxito. Aquí hay un documento que brinda información interesante: Battery Firmware Hacking

Ahora, con respecto a la parte del software: de hecho, la empresa que fabrica el BIOS, en función de la información proporcionada por el fabricante de la computadora portátil/batería, incluye todos los mensajes I2C relevantes en el propio BIOS y el sistema operativo le pregunta al BIOS cuándo necesita saberlo.

Gracias, parece que tendré que hacer ingeniería inversa en la batería de una computadora portátil para averiguar qué paquetes envía realmente, pero al menos puedo estar bastante seguro de que funcionará con cualquier BIOS, ya que los chips son estándar.
No estoy usando una batería de computadora portátil estándar que ya tendría esos chips
Parece que no tenía razón. Tom L encontró algunas especificaciones reales de las que no estaba al tanto. Será mejor que aceptes su respuesta en lugar de la mía, se lo merece mejor.
sí, solo estaba hojeando un poco las especificaciones para asegurarme de que realmente tenía lo que estaba buscando.
No te preocupes; de hecho tienes parte de razón. Muchos paquetes del mundo real vienen con la especificación mencionada, PERO la especificación también especificaba algún bloque de datos del "fabricante"... a menos que lo especifique usted mismo, esto podría ser de todo, desde una simple cadena hasta algún bloque de datos encriptado.