Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Buenas,
Estoy intentando realizar una comunicación entre varias placas mediante el protocolo del CAN Bus.
Y una de las placas hará de uno de los extremo del bus en la que irá conectado un módulo RF que emitirá a un PC los datos obtenidos por el bus CAN del resto de placas.
Ahora bien, me estoy preguntando si existirá una posible problemática. Un problema de concurrencia.
¿Qué opinais?
Pienso que si existe dicho problema, debido a que son dos sistemas distintos, mientras la CAN recibe, la Uart podría recibir o transmitir igualmente.
Ahora bien, en el caso de que penseis que existe dicho problema. ¿Cómo se podría solucionar?
Barajo la idea de utilizar:
para UART el DMA. Permitiendome acceder a memoria sin consumir recursos del micro.
También utilizar las Fifos del CAN y de la UART para ir almacenando los datos en caso de dicha concurrencia.
Por si es de interés, estoy utilizando el micro: PIC32MX795F512L.
Muchas gracias.
Un saludo.
Como bien dice Juanjo necesitas un chip (un micro) intermedio entre el CAN y el USART que te haga de buffer y maneje el sincronismo del bus.
S2
Ranganok Schahzaman
Buenas tardes,
Perdonad la tardanza...he estado ocupado y se me pasó 😳 😳
Lo primero de todo las velocidades no te encajan, no te va a funcionar. ¿Cómo vas a meter una señal con una velocidad de 125 Kbits/s en una con 9.6 Kbits/s? No puedes meter una señal con un ancho de banda 10 veces mayor en un ancho de banda menor, no funciona.
La opción A es más sencilla, pero más cara, ya que requiere 4 módulos RF. La opción B es más ecónomica, por que solo requiere dos módulos y al final la parte de interpretar los mensajes lo tienes que hacer total o parcialmente en el PC.
Sobre las velocidades he de decir que he realizado pruebas con CAN en modo loopback así como con la UART y ver datos Tx y Rx en el PC por separado, quiero decir, primero he probado los módulos individualmente para ver que los configuro bien, etc..etc... Por ello, en la UART como en el CAN estan puestas las velocidades muy bajas. No había pensado lo que comentas de las velocidades. Con esto quiero decir que se pueden cambiar y ajustar, por ejemplo la UART a 115,2Kbits/s o incluso 230,4Kbits/s
La opción A la descarto.
Un nodo de CAN BUS básicamente está compuesto por el driver y por el controlador. Un pasarela es un Gateway, cambia de protocolo. Lo que haces en el caso A simplemente es repetir la señal, pasas de un medio físico que es el par de cables al canal radio. Sin embargo el Gateway te permite coger estos datos y pasarlos al protocolo que utilices con la USART. podrás coger los datos de la USART_TX y enviarlos al CAN BUS o recibir datos del CAN BUS y pasarlos a la USART_TX. Podrás coger todos los mensajes del CAN BUS, filtrarlos, etc.
Digamos que si coges todos los mensajes del CAN BUS, lo que aparece en el registro de recepción del CAN BUS lo colocas el el buffer de la USART y los datos que recibas por el buffer de la USART los pondrás en el registro del controlador para que lo envíe a la red del CAN BUS.
Como bien dice Juanjo necesitas un chip (un micro) intermedio entre el CAN y el USART que te haga de buffer y maneje el sincronismo del bus.
S2
Ranganok Schahzaman
Pero no puedo emplear el micro ya elegido como Gateway para coger los datos del CAN y pasarlos a la USART y viceversa??
En estos momentos uso el transceiver MCP2551 para adaptar las señales y el controlador el micro, con el que filtro los mensajes que quiero recibir así como el destinatario a quien va dirigido el mensaje entre otras cosas
Una pregunta. ¿En el PC tienes pensado recibir todos los mensajes de la red o por el contrario serán mensajes de configuración o interrogación que requieren respuesta de otro nodo? Por que si solo lo vas a utilizar para configuración y pregunta-respuesta, la mejor opción es la B, ya que te permitirá filtrar y solo enviar por el canal radio los datos que necesitas, y sobre todo podrás modular la velocidad, con esto quiero decir que podrías utilizar el modulo con 9600 bits/s.
No recibiré todos los mensajes, serán de configuración y pregunta-respuesta.
Muchas gracias.
Un saludo.