Tengo un STM32F103C8T6 (después quiero más a STM32F407VET6). Ambos tienen soporte para CAN. Pero ¿qué significa esto?
Compré (aún no lo he recibido) un controlador CAN MCP2551 . ¿Necesito esto o esta funcionalidad ya está integrada en mi STM?
¿Y creo que también necesito un transceptor CAN como TJA1050 ?
De acuerdo con este circuito de ejemplo, se utilizan ambos y la entrada del MCP2551, pero tiene un SPI como entrada y el STM tiene RX/TX como entrada/salida CAN, que es similar a los 'conectores' para MCP2551. Pero creo que este circuito de ejemplo no está diseñado para STM32 (ya que SPI no se usa para CAN en STM32).
(Quiero hacer un bus CAN de unos pocos metros, solo dos, luego tal vez 3 dispositivos, preferiblemente con una velocidad de 1 mbps).
Debe tener al menos dos nodos y un par trenzado con terminaciones de 120 ohmios en cada extremo. Los identificadores deben ser únicos. Infórmese sobre los distintos formatos (11/29 bits) y CAN-FD frente a CAN. Sugiero comenzar con 11 bits. El identificador con el número más bajo es el de mayor prioridad.
Por lo general, cuando un microcontrolador es compatible con CAN, significa que la segunda capa de red (enlace de datos) es compatible con CAN MAC. Por lo general, debe proporcionar un transceptor (la capa física). CAN tiene requisitos exigentes (eléctricamente) para la tolerancia máxima de voltaje que normalmente serían incompatibles con los procesos monolíticos de bajo costo que admiten la complejidad del microcontrolador. También puedes comprar chips con interfaces seriales que implementen el MAC, que puedes conectar a casi cualquier microcontrolador con (p. ej.) SPI.
Existen varios protocolos de alto nivel que pueden ir por encima de las 2 capas especificadas por CAN, o para una aplicación simple, puede implementar la suya propia. Los mensajes CAN se transmiten esencialmente y cada nodo puede usarlos o descartarlos, como multidifusión o transmisión.
Un analizador de protocolos CAN puede ser útil; puede comprarlos por el valor de una o dos horas de depuración.
dirk bruere
michel keijzers