Depuración de la transmisión de datos a través de I2C

1

Pude generar I 2 C a través de un microcontrolador, pero aún tengo dudas sobre ciertas cosas.

Primero, si enviamos datos como 0x0a, entonces podemos monitorear los datos, ya que son datos de un solo byte. Pero cuando los datos se convierten en varios bytes como un flotador / entero (4 bytes / 2 bytes), ¿cómo podemos depurar si los datos correctos vienen o no, si estamos observando a través de un alcance? Estoy seguro de que tenemos que buscar a través del alcance, pero escuché que el compilador transmite datos de tipo binario tanto para enteros como para flotadores. Busqué una precisión de punto único para flotar y tengo una idea.

¿Cuál es el método para verificar que los datos enteros / flotantes que se reciben son correctos a través del alcance?

    
pregunta Rookie91

1 respuesta

1

Debe comprender el formato y el tamaño de los tipos de datos que se envían.

El ejemplo más fácil sería el entero. Para su sistema, los enteros se representan con 2 bytes o 16 bits (consulte la documentación del compilador para el tamaño correcto). Debería analizar esto en un ámbito de la misma manera que analizaría el envío de un solo byte, pero en su lugar vería 2 bytes contiguos para reconstruir el número entero. Por ejemplo, enviar el entero sin signo 3241 debería mostrar 0xA9 * 0x0C *, donde cada '*' es un reconocimiento de esclavo (el orden de los bytes puede invertirse dependiendo de la endianess).

Aquí hay una entrada de wikipedia en un formato de punto flotante de precisión simple IEEE . Si está enviando un flotante, espere ver que se envíen los bytes en este formato.

Esta respuesta asume que en realidad está enviando cada byte de la variable deseada, no solo el primero. Si está pasando un puntero de byte o un búfer a sus métodos I2C junto con un tamaño, asegúrese de que está apuntando a la variable y está pasando el tamaño correcto con el operador sizeof.

    
respondido por el Jon L

Lea otras preguntas en las etiquetas