El kit de microcontrolador (kit de descubrimiento STM32F4) que estoy usando tiene soporte CAN y USB. Quiero programar mi microcontrolador para que cada vez que se reciba un mensaje CAN, se transmita a través de USB a la PC host. También necesito ver la hora a la que se recibió cada mensaje CAN. En la PC host puedo ver esta información.
¿Cómo puedo encontrar la información de tiempo sobre el mensaje CAN recibido, es decir, a qué hora se recibió cada mensaje CAN?
Ya tengo un método que explicaré aquí. Necesito su sugerencia con respecto a mi idea o puede sugerir un nuevo método.
Mi método: ejecuta un temporizador dentro del microcontrolador. Cada vez que se recibe un mensaje CAN, el valor presente en el temporizador se almacena y el temporizador se reinicia. El valor del temporizador almacenado junto con la información del mensaje CAN se transfiere a través de USB a la máquina host.
Aquí, cada incremento del temporizador puede ser equivalente a 1 milisegundo o 1 microsegundo, según la configuración del temporizador. El microcontrolador siempre enviará la diferencia horaria entre dos mensajes CAN.
También estoy planeando usar otro contador que aumentaría para cada desbordamiento del temporizador. A veces, un mensaje CAN puede llegar solo después de dos segundos (o incluso en otro momento). En ese caso el temporizador puede desbordarse. Cada vez que un temporizador ha terminado, el contador se incrementará. Esto sucede hasta que llega el siguiente mensaje CAN. Este valor de contador también se transmitirá a la PC host.
¿Cómo está mi método anterior? ¿Hay alguna idea mejor?