Confusión sobre los puertos y registros de ARM-Tiva

0

Así que estoy aprendiendo el curso Edx Embedded "Shape the World", es muy bueno hasta ahora y realmente estoy aprendiendo mucho.

Estoy en la sección (6) aprendiendo sobre puertos y registros. Y tal vez estoy un poco confundido en lo que es exactamente un "Puerto".

Aquí hay una captura rápida de la tabla "Puertos" (Específicamente el puerto F que estamos usando): PORT F

Principalmente entiendo los registros, son de 32 bits (la mayoría de los bits se reservan además de los primeros 8 (0-7). Como los pines de habilitación DEN, etc. Pero supongo que estoy confundido en este caso ... ¿Qué es un PIN y qué es exactamente un PUERTO?

estos son puertos paralelos ¿verdad? ¿Los puertos serie solo tendrían..2 registros con menos de 32 bits (ya que tx / rx / clk es todo lo que necesita en el derecho de serie?)

tal vez solo esté un poco perdido en lo que funcionalmente es PORT / PIN. Entiendo lo que es un registro (32 chanclas básicamente en este caso), pero estoy asegurándome de que entiendo los fundamentos antes de continuar.

Secundaria como una pregunta, ¿por qué la imagen que adjunto muestra como 5 registros DEN para 1 puerto? ¿Cuál sería el punto de eso?

    
pregunta msmith1114

2 respuestas

3

Un puerto es un grupo de pines, generalmente ocho o dieciséis de ellos.

Un registro es una ubicación en la memoria que controla un periférico en el microcontrolador. Algunos de esos periféricos son periféricos GPIO, que le permiten controlar la E / S en los pines. Cada puerto tiene su propio periférico GPIO (por ejemplo, GPIOA, GPIOB, etc.).

Por ejemplo, un periférico GPIO típico tendrá un registro para controlar si cada pin es una entrada o una salida, un registro para controlar qué datos se emiten, un registro de solo lectura para representar los datos de entrada, y probablemente en al menos un par de otros registros para controlar el pull-up / down, la velocidad de giro, la selección de AFIO y otras cosas.

"Puertos serie" y "puertos paralelos" son términos de computadoras personales. Realmente no se aplican a los microcontroladores; hay una variedad de periféricos de E / S disponibles comúnmente que se pueden usar en modo serial y / o paralelo.

(Lo que usted piensa como un "puerto serie" generalmente se representa en un microcontrolador como un periférico UART o USART. Se pueden conectar a pines que se "toman prestados" de los periféricos GPIO, pero por lo general tienen bastante de diferentes registros internamente.)

La tabla en la imagen que has vinculado es ... algo inútil. Probablemente debería echar un vistazo a la hoja de datos del microcontrolador que está utilizando; probablemente explicará las cosas mucho mejor que esa tabla.

    
respondido por el duskwuff
2

Un puerto es un término suelto para una agrupación de E / S externas. Además de los puertos GPIO, puede tener UART, SPI, USB, Ethernet, etc. Pensar en paralelo y en serie puede ser útil en un nivel educativo introductorio donde puede comenzar a pensar en la compensación amplia / estrecha, pero estos términos son Mejor visto como aproximaciones relativas y no distinciones difíciles y rápidas. Detrás de cualquier puerto, es probable que tenga alguna lógica periférica que maneje el comportamiento detallado (dirección y valor para un puerto simple o búferes y detalles de protocolo de bajo nivel) para un puerto dedicado con una función específica).

Un pin es un lugar individual en un circuito. En general, las conexiones externas a un ASIC o un componente, pero también se pueden usar para describir los nodos internos si el contexto es correcto. Los puertos generalmente constan de varios pines.

Registros es el más sobrecargado de estos términos. Puede tener al menos los siguientes significados:

  • el núcleo 'arquitectónico' registra R1-R14 y la PC (que es un registro virtual). Estos son 32 bits.
  • los registros de control de arquitectura del núcleo que influyen en la depuración, los estados del núcleo, el mapeo de memoria, etc. Estos pueden ser mapeados en memoria o mapeados por co-procesador (excepto en Cortex-M, donde solo se admite la implementación mapeada en memoria). En su mayoría están alineados con las palabras, pero es posible que no utilicen todos los bits de cada palabra. Generalmente se comportan como la memoria.
  • Registros de control periférico. Estos son mapas de memoria pero pueden no comportarse como memoria. Puede haber un búfer, la lectura y la escritura pueden tener diferentes funciones, pueden ser sensibles al acto de leer o escribir (claro al leer, por ejemplo, para un bit de estado). Por lo general, están alineados con las palabras, pero no siempre utilizan los 32 bits.
  • Los registros también son las celdas de almacenamiento de bajo nivel, a menudo llamadas flip-flops. Estos son bits individuales o matrices de bits (pueden ser de cualquier tamaño). Hay muchos más de estos en un diseño de lo que cabría esperar al sumar todas las instancias de los otros 3 casos mencionados anteriormente.

Su imagen describe un puerto de 20 bits, con un control DEN para cada pin (al menos esa es mi suposición). Por alguna razón, los bits en los registros de control se colocan en grupos de 4 bytes en la tabla.

Un puerto GPIO consistirá típicamente en una matriz de pines similares, cada uno con un control independiente. La razón de esto (y otra razón para evitar el moniker del 'puerto paralelo') es que cada uno o dos pines en este puerto pueden tener un propósito específico. Algunos pines podrían usar las funciones alternativas (y estar conectados a un periférico diferente), algunos podrían usarse para las entradas del conmutador, algunos para el control de LED y otros para seleccionar un chip para complementar un periférico I2C. Algunos pines en el GPIO podrían incluso usarse como controles internos para un dispositivo.

    
respondido por el Sean Houlihane

Lea otras preguntas en las etiquetas