diferencia entre el búfer y el buzón

0

Los periféricos en los microcontroladores suelen proporcionar una forma de enviar y recibir datos de ellos. Por lo general, estos son registros asignados en memoria.

Me he topado con algunas terminologías. El más utilizado es un búfer y probablemente un FIFO. Pero cuando trabajaba con los controladores CAN, me topé con los buzones.

Ahora estoy confundido.

¿Cuál es la diferencia entre un búfer y un buzón? O un FIFO y un buzón.

¡Gracias!

    

2 respuestas

2

Un búfer es simplemente una colección de registros de datos a los que puede acceder su programa. En el caso de CAN, generalmente hay uno o varios "registros de campo de control" donde puede encontrar el identificador CAN, la longitud de los datos del mensaje, el RTR y esas cosas. Seguido por 8 bytes de los datos reales.

Un FIFO (primero en entrar, primero en salir) es simplemente un número de buffers, que forman una cola. El primer artículo que llega a la cola es el primero en salir. Esto es manejado por el hardware, para que no tenga que desencadenar una interrupción para dar servicio a todos y cada uno de los mensajes CAN. Lo más común es que haya un Rx FIFO para los mensajes recibidos, esto tiene más sentido ya que esto podría causar interrupciones, pero algunos controladores CAN también admiten alguna forma de Tx FIFO.

En el caso de Tx FIFO, generalmente es solo un mecanismo que le permite tener varios mensajes salientes (generalmente 3), pero haga que el controlador CAN elija el que tenga el identificador CAN más bajo en el próximo punto de arbitraje del mensaje. el autobús. También hay muchos controladores CAN tontos que requieren que configure un "Prio Tx" manual en lugar de simplemente usar el identificador CAN. Evita estos.

Es posible que algunos microcontroladores sean compatibles con DMA para búferes CAN, de modo que pueda tenerlos almacenados directamente en algún trozo conveniente de RAM, en lugar de tener que activar / desactivar repetidamente el disparo en los registros del periférico CAN.

Los buzones son una alternativa diferente. Cada buzón es un búfer (rx y / o tx), pero se puede configurar para que funcione solo con un identificador CAN específico. Lo que significa que también tiene un indicador de recepción y quizás también posibilidades de interrupción. Son perfectos para sistemas en los que su MCU solo está interesada en una cantidad limitada de identificadores.

Una configuración más avanzada, pero bastante común, es combinar un Rx FIFO con buzones, de modo que los mensajes de alta prioridad terminen en su buzón dedicado, mientras que todo lo demás termina en el FIFO. Esta podría ser una buena solución para aplicaciones CAN más avanzadas como, por ejemplo, CANopen, donde tiene innumerables identificadores posibles en el mismo bus.

    
respondido por el Lundin
1

Un búfer es un término bastante genérico, por lo que tendrá que confiar en el contexto para determinar aspectos específicos, se utiliza un búfer para almacenar datos temporalmente antes de que pueda procesarse, por ejemplo. almacenando en búfer los datos antes de que puedan ser transmitidos.

FIFO es un acrónimo de First In, First Out; describe cómo el orden de los artículos entrantes corresponde al orden de los artículos salientes; por ejemplo, la estructura de datos que ordenan los implementadores FIFO es la cola. A menudo, FIFO se utiliza como un adjetivo, por ejemplo, un búfer FIFO es un búfer que puede almacenar varios elementos y enviarlos en el mismo orden en que se recibió. El ejemplo de hardware más simple de un búfer FIFO probablemente sería un registro de desplazamiento.

El término buzón de correo implica que el esquema de direccionamiento de perdón está en uso, es decir, cada buzón tenía un identificador o dirección único. Específicamente en el estándar CAN (un estándar de comunicación), conceptualmente un buzón es un búfer direccionado, esencialmente el control CAN verifica la ID especificada en un mensaje y, si coincide con el buzón, el contenido del mensaje está almacenado en él.

    
respondido por el jonvw

Lea otras preguntas en las etiquetas