La forma en que la radio muestra informacion en la pantalla es sencilla utuiliza un bus de 3 lineas llamado "3LB" desconozco de donde procese ese nombre pero lo cierto es que es un bus SPI simplificado a 3 hilos ENABLE, DATA y CLOCK donde ENABLE es la señal de seleccion de esclavo SS DATA es la señal MOSI donde se enviaran los bits con el texto a mostrar y CLOCK es la señal de sincronia de reloj.
Un ejemplo de una señal generada por la radio original del coche
el texto a mostrar es el siguiente:
8 9 . 3 M H Z
F M 1 1
Y estos son los datos enviados por la radio para este mismo mensaje:
7E ED 0F DF C7 C6 D1 CC B2 B7 A5 B9 B2 CE E3 CE E3 E3 E3 F5
Los bytes en negro es el mensaje en si, con la peculiaridad que estan invertidos, donde DF invertivo=20 hexadecimal= "espacio en blanco" ASCII C7invertido=38 hexadecimal=8 ASCII y asi sucesivamente, los primeros 8 bytes representan la linea superior del display y los 8 ultimos la linea inferior.
Los bytes en azul siempre se envian asi sea cual sea el texto a mostrar, el byte verde es la suma de verificacion y el byte rojo es parecido a los azules, siempre se envia aunque este lo hace con la señal ENABLE a nivel bajo, desconozco porque es asi pero a diferencia de los ejemplos de audi que podemos ver en el blog de Kovo el byte rojo y el primer byte azul no se envian en el cuadro audi.
El problema lo encuentro para calcular la suma de verificacion ya que segun los ejemplos de audi se calcularia de la siguiente forma:
pasamos los bytes a decimal, le restamos 255 a cada byte sumamos el resultado de todos los bytes y a ese producto sacamos la relacion de congruencia entre 256, de otra manera.
CRC=MODULO(SUM(255-DEC),256)
pero si bien esta formula casa perfectamente para audi en vw no es asi si realizamos la operacion
si realizamos la operacion anterior con el ejemplo expuesto obtendremos como resultado 36 decimal, que es 24 hexadecimal cuando deberia ser F5 por tanto esta formula no es valida, mientras trabajo para hallar la formula adecuada para el calculo de es te byte dejo mas ejemplos por si alguien quiere aceptar el desafio.
7E ED 0F DF C7 C6 D1 CC B2 B7 A5 B9 B2 CE E3 CE E3 E3 E3 F5
7E ED 0F B7 B0 B3 BE BE BE DF DF DF DF DF DF DF DF DF DF 97
7E ED 0F CE CF CF CF DF DF DF DF DF DF DF DF DF DF DF DF 9E
hasta ahora he probado mediante VRC(vertical redundancy check) de la siguiente forma:
0111 1110 7E
1110 1101 ED
0000 1111 0F
1100 1110 CE
1100 1111 CF
1100 1111 CF
1100 1111 CF
1101 1111 DF
1101 1111 DF
1101 1111 DF
1101 1111 DF
1101 1111 DF
1101 1111 DF
1101 1111 DF
1101 1111 DF
1101 1111 DF
1101 1111 DF
1101 1111 DF
1101 1111 DF
1001 1101 9D
La formqa correcta es sumando 1 al byte resultante de forma que 9D + 1 = 9E de esta manera siempre coincide

hola me puede dar el código de Arduino? También estoy interesado en esta información para mi golf4 vw
ResponderEliminar