Cómo traducir de la hoja de datos a la función de pin real (Atmel SAMD21 en blanco)

1

Estoy buscando una manera de leer realmente la configuración de un pin del procesador Atmel (SAMD-21); pero no estoy seguro de cómo se obtiene la información correcta de la hoja de datos.

Leí el pinout, que tiene nombres como PA00, PB03, etc. Al leer en la sección multiplexada, veo una tabla con cada pin, pero no puedo obtener lo que realmente hace. Esperaba algo como "SPI MOSI" o "Serial TX" y demás; en cambio, la tabla tiene una tonelada de entrada que no se parece a nada que reconozca.

Por ejemplo, el Pin 13 es PA08, ya que el tipo se menciona como I2C, y el resto de la línea tiene una entrada como

NMI  AIN[16]  X[0]  SERCOM0/Pad0  SERCOM2/Pad0  TCC0/WO[0]  TCC1/WO[2]  I2S/SD[1]

Hice una búsqueda en la sección relacionada con el pinout, pero solo hay esta tabla, que si bien me dice si el pin es un I2C o SPI, no me da ningún contexto para traducir en lo que vería en un tablero de ruptura, por ejemplo.

¿Hay una tabla de conversión que muestre lo que significan estas entradas? Soy un ingeniero de software, por lo que este es mi primer intento de leer una hoja de datos para un procesador.

ACTUALIZACIÓN:

Encontré algo de información en línea, después de buscar SERCOM.

A mi entender, el SAMD21 tiene pines programables, pero algunos están configurados como predeterminados para la comunicación relacionada con I2C, SPI y UART. Estos están bajo el nombre "SERCOM".

Esto muestra básicamente el valor predeterminado para cada pin, usando una tabla de cero arduino como referencia

Pin     Default     SERCOM      SERCOM alt
-----------------------------------------
PA00    xtal                    SERCOM1.0
PA01    xtal                    SERCOM1.1
PB08                            SERCOM4.0
PB09                            SERCOM4.1
PA04                            SERCOM0.0
PA05                            SERCOM0.1
PA06                            SERCOM0.2
PA07                            SERCOM0.3
PA08                SERCOM0.0   SERCOM2.0
PA09                SERCOM0.1   SERCOM2.1
PA10                SERCOM0.2   SERCOM2.2
PA11                SERCOM0.3   SERCOM2.3
PB10    MOSI                    SERCOM4.2
PB11    SCK                     SERCOM4.3
PA12    MISO        SERCOM2.0   SERCOM4.0
PA13    EDBC        SERCOM2.1   SERCOM4.1
PA14                SERCOM2.2   SERCOM4.2
PA15                SERCOM2.3   SERCOM4.3
PA16                SERCOM1.0   SERCOM3.0
PA17                SERCOM1.1   SERCOM3.1
PA18                SERCOM1.2   SERCOM3.2
PA19                SERCOM1.3   SERCOM3.3
PA20                SERCOM5.2   SERCOM3.2
PA21                SERCOM5.3   SERCOM3.3
PA22    SDA         SERCOM3.0   SERCOM5.0
PA23    SCL         SERCOM3.1   SERCOM5.1
PA24    USB         SERCOM3.2   SERCOM5.2
PA25    USB         SERCOM3.3   SERCOM5.3
PB22    EDBG TX                 SERCOM5.2
PB23    EDBG RX                 SERCOM5.3
PA30    SWCLK                   SERCOM1.2
PA31    SWDIO                   SERCOM1.3
PB02                            SERCOM5.0
PB03    RX LED                  SERCOM5.1

Básicamente, puedes establecer cualquiera de estos pines si necesitas puertos adicionales para I2C, SPI o UART.

Ya que estoy usando el SAMD21 desnudo; Creo que los pines ni siquiera tienen un conjunto predeterminado. Si alguien hubiera empezado con un SAMD21 simple, realmente agradecería alguna orientación sobre cómo configuró el chip.

Enlace a la hoja de datos: enlace

Pinout : page 26
Muxing table: page 33 to 36
    
pregunta rataplan

1 respuesta

3

No es raro ver los pines de E / S multifunción en los microcontroladores, por lo que las tablas en la hoja de datos (particularmente la tabla 7.1) identifican las funciones alternativas asociadas con cada pin (y por extensión, el periférico al que se pueden unir internamente).

Esta parte no es muy diferente de muchas variantes que utilizan núcleos ARM Mx con múltiples asignaciones de periféricos.

La función de pin predeterminada para todos los pines de E / S estándar es un puerto de E / S digital ordinario (consulte el texto copiado de la hoja de datos en la parte inferior).

Como ejemplo, tomaré un par de líneas de la tabla en cuestión:

Alaizquierdaestáelpinfísico(siexiste,dependedecuántospinestieneelpaqueteylavariantedelcontrolador).

Lasiguienteparteeselbitdepuertoconectadoalpinensí.

Aladerechadeaquíestáelpin(s)desuministroquerealmentealimentaestebitdeE/S.

Enlasiguientecolumna,vemosI2C,estoseexplicaenlanota3:

  
  • Solo algunos pines se pueden usar en el modo SERCOM I2C. Consulte la columna Tipo para usar un pin SERCOM en modo I2C. Consulte Eléctrica.   Características para detalles sobre las características del pin I2C.
  •   

    Esto me dice que solo puedo usar pines con I2C contra ellos para que las unidades de control en serie puedan usar una interfaz I2C.

    A la derecha hay funciones alternativas (si existen) de A a H.

    PB13, por ejemplo, tiene funciones alternativas en

    A: EXTINT [13] que se conecta al controlador de interrupción si se selecciona.

    B - > X (11) para el controlador táctil

    C - > SERCOM (controlador de módulo serie) número cuatro que se adjuntará a PAD1 como se documenta en el capítulo SERCOM en la hoja de datos.

    D, F y G no tienen una función alternativa.

    E y F permiten que el pin funcione como parte del módulo de temporizador / contador

    La función G conecta el pin al módulo I2S (audio).

    La función H conecta el pin como un reloj genérico (consulte la descripción del reloj en la sección 14 para obtener más detalles).

    Para usar cualquier función, debes (al menos)

    1. Encienda el reloj asociado con la función (o se ignoran todas las escrituras en el periférico; consulte el módulo del administrador de energía)

    2. Habilitar la función periférica específica

    3. Programe el (los) registro (s) PMUX de manera apropiada (vea la sección 23.7).

    4. Habilite la función multiplexada en PINCFGy configurando el bit PMUXEN para el pin específico.

    5. Los otros bits en PINCFGy también deben configurarse adecuadamente.

    Sin saber la configuración específica que necesita, no puedo proporcionarle más orientación.

      

    Bit 0 - PMUXEN: Habilitar multiplexor periférico   Este bit habilita o deshabilita el conjunto de selección de multiplexor periférico en el registro de multiplexación periférica   (PMUXn) para habilitar o inhabilitar el control periférico alternativo sobre una dirección de pin de E / S y una unidad de salida   valor .   Escribir un cero en este bit permite que el PORT controle la dirección del pad a través del registro de Dirección de datos (DIR) y el valor del variador de salida a través del registro de Valor de salida de datos (OUT). El valor del multiplexor periférico en PMUXn se ignora. Escribir '1' en este bit permite que la selección de periféricos en PMUXn controle el pad. En   En esta configuración, el estado del pin físico aún puede leerse desde el registro del valor de entrada de datos (IN) si se establece PINCFGy.INEN.

        
    respondido por el Peter Smith

    Lea otras preguntas en las etiquetas