Pregunta sobre comunicación mediante una red de área del controlador (CAN)

2

Estoy tratando de hacer un bucle CAN de prueba en una placa de pruebas y quiero intentar leerlo y escribir con un mbed.

Encontré un circuito de ejemplo y un código de prueba para leer y escribir desde un bucle CAN usando mbed. Sin embargo, si observa el código de prueba, puede ver que escribe desde los Pines 9 y 10 y lee desde los Pines 29 y 30. Por lo que he leído hasta ahora, esto se llama escribir en un nodo en el bucle CAN y leer desde otro nodo.

Manual de CAN

¿Pero me pregunto si es posible turnarse para leer y escribir solo desde los pines 29 y 30? Creo que esto se llamaría escritura y lectura desde el mismo nodo en el bucle CAN. Desafortunadamente, no creo que pueda hacer eso por lo que he leído hasta ahora. Una fuente que encontré dice ...

  

Cada nodo puede ver todos los mensajes de todos los demás nodos, pero no puede ver su propio mensaje

se encuentra en la página 3 de Manual de CAN: Creación de su propia red .

Intenté probar la lectura y escritura desde el mismo nodo creando el circuito en una placa de pruebas y cambiando el código de can1.write a can2.write. Pero el mensaje nunca fue recibido. Me pregunto si es porque mi código modificado es incorrecto para leer / escribir desde un nodo.

Pero intuitivamente me parece que el mensaje debería poder volver al remitente. Como no sé mucho sobre CAN, quería venir aquí y ver si alguien sabía la respuesta a mi pregunta ...

¿Puedo hacer una lectura y escritura de un bucle de prueba desde el mismo nodo (solo los pines 29 y 30) en el mbed?

    
pregunta brich91

2 respuestas

1

Como has señalado correctamente

  

Cada nodo puede ver todos los mensajes de todos los demás nodos, pero no puede ver   su propio

no puedes leer lo que transmites. En otras palabras, CAN es el protocolo Half Duplex .

Hay una razón para eso. CAN utiliza CSMA, es decir, acceso múltiple por detección de portadora. Un nodo valida lo que transmite para asegurarse de que aún retiene el control del bus (puede leer más sobre "Arbitraje del bus CAN"). Técnicamente, un nodo, o para ser específico, el controlador CAN, lee lo que transmite, pero no está disponible para el controlador.

Pero hay ciertos controladores que tienen una característica de "Loop Back". Devuelve el mensaje en la transmisión exitosa.

    
respondido por el Swanand
0

Su tarjeta mbed cuando está conectada como se describe en el enlace del Manual CAN cuenta como dos nodos. Hay dos controladores CAN separados en el chip, que son completamente independientes entre sí. Así que puedes enviar mensajes de uno a otro.

Sin embargo, como nota correctamente, un nodo en particular no presenta sus propios mensajes como "recibidos" (aunque el controlador "recibe" los bits y verifica que se hayan salido correctamente, no transfiere esos datos como un Mensaje recibido: no hay razón para querer hacerlo en una aplicación real.)

    
respondido por el Martin Thompson

Lea otras preguntas en las etiquetas