¿Cuáles son CAN_SJW, CAN_BS1 y CAN_Prescaler relacionados con el bus CAN en STM32?
Cada nodo en la comunicación del bus CAN producirá una diferencia de fase al comunicarse, por lo que se requiere sincronización de bits para mantener los dos nodos en el mismo paso.
CAN_SJW: Ancho de salto de resincronización (SJW). Define un límite superior sobre cuántas unidades de tiempo se pueden ampliar o acortar en cada bit. Su valor se puede programar de 1 a 4 unidades de tiempo.
CAN_BS1: Periodo de tiempo 1 (BS1): Definir la ubicación del punto de muestreo. Su valor se puede programar de 1 a 16 unidades de tiempo, pero también se puede ampliar automáticamente para compensar la deriva de fase positiva causada por diferencias de frecuencia en diferentes nodos de la red.
CAN_BS2: Periodo de tiempo 2 (BS2): Define la ubicación del punto de envío. Su valor se puede programar de 1 a 8 unidades de tiempo, pero también se puede acortar automáticamente para compensar la deriva de fase negativa.
CAN_Prescaler: La comprensión intuitiva es la frecuencia divisoria.
La velocidad en baudios del bus CAN se toma del bus APB1 (PCLK1), y la frecuencia se configura para PCLK1 mediante la función RCC_PCLK1Config. Después de configurar los cuatro valores anteriores,
La velocidad en baudios del bus CAN = PCLK1/((CAN_SJW +CAN_BS1 + CAN_BS2)*CAN_Prescaler)
Asuma PCLK1=36MHz, CAN_SJW= 1 CAN_BS1=8, CAN_BS2=7, CAN_Prescaler=9
Entonces la velocidad en baudios del bus CAN = PCLK1/((1 + 8 + 7) * 9) = 36MHz / 16 / 9 = 250Kbits<. /p>
Hay mucho que se puede explicar, ¡solo mire el manual del chip y las rutinas del programa y lo entenderá! ! ! !