8 votos

¿Por qué ganó ' t mi transceptor puede recibir los mensajes a menos que haya una demora de inicio larga o un analizador de bus conectado?

Estoy usando un MCU de 16 bits, PIC24HJ64GP504, para escribir una lata aplicación basada en. Básicamente se trata de la comunicación entre mi mesa y uno que otro nodo que continuamente mantiene en el envío de datos a la placa utilizando a 1 Mbit/s. Estoy configurando el módulo ECAN en mi PIC24 a trabajar a 1 Mbit/s. He escrito el código de tal manera que durante los primeros 10 ms, el módulo ECAN aceptará todos los mensajes que llegan desde el otro lado, y después de que he re-configurar el módulo ECAN para aceptar sólo los mensajes con el mensaje de IDENTIFICADOR de 0x13.

Ahora aquí viene el problema.. El otro nodo y mi tablero se encienden en el mismo instante. El otro nodo inicia la transmisión de mensajes a partir de los 40 ms o así después del encendido. Pero yo no soy capaz de conseguir cualquier mensaje de ella en mi tablero. Ahora si me enciende mi tablero en primer lugar, darle un poco de tiempo para volver a configurar el módulo ECAN con nuevos filtros y establecerse y, a continuación, encienda el otro nodo, entonces todo funciona a la perfección.

Ahora la parte más rara.. Si tengo un bus CAN analizador conectado entre la junta y el otro nodo y aunque me enciende ambos nodos al mismo tiempo, todo funciona bien...no necesitas encender mi consejo primero. He intentado esto con tres diferentes autobús analizadores de diferentes fabricantes y obtuvo los mismos resultados.

Me parece que durante la re-configuración del módulo ECAN, toma algún tiempo para establecerse. Y con la introducción del analizador de autobús, en el autobús, esta vez es de alguna manera cortado de tal manera que todo funciona a la perfección. Pero no estoy seguro de qué es exactamente el problema.

He estado luchando con este problema durante los últimos siete días.

PS: Hoy he comprobado con un alcance y ha descubierto que si el otro nodo empieza a transmitir después de 170 ms después del encendido, entonces todo funciona bien. Antes de eso, mi dispositivo no recibirás más mensajes de el a menos que el autobús analizador esté conectado. La peor parte es que no puedo retrasar la transmisión de otro nodo, el firmware de ese nodo es de propiedad exclusiva.

También he leído en un foro de hoy en día que PUEDE las necesidades de los 120 Ohm resistor en el nodo para hacer el trabajo (a pesar de que mi nodo no tiene uno y funciona bien, siempre se les da un tiempo para asentarse después de la reconfiguración). Sospecho que la introducción de los autobuses analizador de alguna manera los cambios de la red eléctrica de los parámetros que el tiempo tomado por mi nodo a establecerse después de la reconfiguración se corta. Pero no estoy seguro.. :(

9voto

RelaXNow Puntos 1164

"Leer en un foro de" en algún lugar de que el autobús de las necesidades de los resistores? En serio!!?

Esta es una parte integral de su diseño. Si usted va a utilizar PUEDE, usted tiene que entender, lo que significa que la lectura de la documentación pertinente.

Spearson es correcto pero por la razón equivocada. Un diferencial de bus CAN como usted probablemente (por no decir lo de la interfaz de chip que se usa, pero probablemente tienes un diferencial de bus CAN como impulsado por algo así como un MCP2551 en cada nodo) requiere una resistencia entre las líneas. Esto es debido a que el recesivo estado es señalado por las dos líneas pasivamente tiran juntos, y el estado dominante por ellos de forma activa separados. Las resistencias entre las líneas en que sentido son el equivalente de una resistencia pull-up en un colector abierto de la línea. Sin algo tirando de las líneas juntas, cuando nada está conduciendo el autobús, el autobús no funciona.

Las resistencias también funcionan como terminadores como spearson señaló. Se suele utilizar par trenzado para las dos líneas de autobús. Esto tiene una impedancia de alrededor de 120 Ohm. Este tipo de diferencial de bus CAN se define que el 60 Ω entre las líneas de un pull-juntos de modo que pueda ser implementado con 120 Ω a cada uno para terminar el bus y evitar reflejos.

 

4voto

On Freund Puntos 3479

En condiciones normales de operación PUEDE, un nodo se repita su transmisión hasta que se ACK d o el número de error que se ha superado. Cuando usted tiene PUEDE analizador conectado a la red, se emitirá la CONFIRMACIÓN de bits cuando se detecta el marco de su primer nodo, haciendo que la transmisión exitosa. Si usted está utilizando el Microchip PUEDE AUTOBÚS Analizador se puede configurar para escuchar solo a modo, lo que significa que no va a emitir ningún ACK bits, por lo tanto no afecta a la red. Así que usted debe ser capaz de ver la repetida PUEDE enmarcar en la pantalla del analizador hasta el segundo nodo emite un ACK o el primer nodo se cierra la transmisión debido a la cantidad de errores.

El bit ACK será establecida por un nodo receptor (si el marco está completa y correcta) independientemente de cualquier filtrado de direcciones.

Más probable es que el primer nodo es llegar a un estado de error debido a que el marco no se ACK. Usted debe detectar esta en el software para utilizar la CiINTF registro. También puede configurar el PIC para la emisión de las interrupciones para las condiciones de error utilizando el CiINTE registro.

Si su alcance no PUEDE decodificar marcos, pruebe el Saleae Logic analyzer. Se PUEDE decodificar el marco y mostrar el ACK/bit de Error. Ha sido mucho más fiable que el Microchip PUEDE analizador.

3voto

Adam Mitz Puntos 4540

Hay un ACK de la ranura (dos bits) en un Marco. Si un nodo es la transmisión de los datos y hay otros cinco nodos en autobús, después de la transmisión de cualquier nodo recibe el marco de poner la dominante de bits en la CONFIRMACIÓN de la ranura. Esto indica que el mensaje fue transmitido con éxito. De lo contrario, PUEDE controladores de considerar como un error en el bus.

Cuando se agrega una lata de analizador, envía ACK para el transmisor. El transmisor piensa que el autobús es buena y se mantiene en la transmisión. En la ausencia de una analizador, cuando vuelva a configurar su controlador PUEDE, el transmisor no recibe un ACK y piensa que hay un error en el bus, así que deja de transmitir.

Espero que entendió el punto.

Asegúrese de que el ACK está recibiendo correctamente. También trate de no apague el receptor PUEDE completamente mientras se hace re-configuración.

Otro truco (no estoy seguro de que funcione siempre) es el envío de un cero DLC y cero ID marco después de la re-configuración. Esto le dirá el transmisor nodo que el bus está activo, y se empieza a transmitir.

Nota: una de 120 Ohm resistor es un MUST!!!. Una terminación de la resistencia es lo importante en CUALQUIER autobús.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X