Cada periférico puerto serie posee ocho registros de 32 bits, ubicados en una zona determinada del mapa de memoria del DSP, que pueden ser accedidos por software en lectura o escritura. En la figura 4.10 se muestra la posición, en el mapa de memoria, de estos registros que son:
·
Registro de control global del periférico. Ubicado en la posición 808040H (Puerto Serie0) y en la
posición 808050H (Puerto Serie1). Determina el modo de operación del periférico
y monitoriza el estado del mismo. En la figura 4.11 se muestra el registro de
control global del periférico y en la tabla 4-2 se muestran las funciones de
cada bandera de dicho registro.
·
Registro de control de FSX, DX y CLKX. Ubicado en la posición 808042H (Puerto Serie0) y en la posición
808052H (Puerto Serie1). Controla las funciones de las líneas de entrada/salida
asociadas a la parte de transmisión del puerto serie. En la figura 4.12 se
muestra el registro de control de las líneas FSX, DX y CLKX y en la tabla 4-3 se muestran las
funciones de cada bandera o bit de dicho registro.
·
Registro de control de FSR, DR y CLKR. Ubicado en la posición 808043H (Puerto Serie0) y en la
posición 808053H (Puerto Serie1). Controla las funciones de las líneas de
entrada/salida asociadas a la parte de recepción del puerto serie. En la figura
4.13 se muestra el registro de control de las líneas FSR, DR y CLKR y en la tabla 4-4 se muestran las
funciones, de cada bandera o bit, de dicho registro.
·
Registro de control de los dos temporizadores de 16 bits. Ubicado en la posición 808044H (Puerto Serie0) y en la
posición 808054H (Puerto Serie1). Es un registro de 32 bits en el que los 12
bits menos significativos se corresponden con el registro de control del
temporizador asociado a la parte de transmisión del puerto serie y los 12 bits que
le siguen constituyen el registro de control del temporizador asociado a la
parte de recepción del puerto serie. En la figura 4.14 se muestra el registro
de control de los temporizadores del periférico y en la tabla 4-5 se muestran
las funciones de cada bit de dicho registro.
·
Registro contador de los temporizadores de 16 bits. Ubicado en la posición 808045H (Puerto Serie0) y en la
posición 808055H (Puerto Serie1). Es un registro de 32 bits constituido por los
16 bits del registro de cuenta del temporizador asociado a la parte de
recepción del puerto serie (16 MSBs) y los 16 bits del registro de cuenta del
temporizador asociado a la parte de transmisión del puerto serie (16 LSBs).
·
Registro periodo de los temporizadores de 16 bits. Ubicado en la posición 808046H (Puerto Serie0) y en la
posición 808056H (Puerto Serie1). Determina el valor de fin de cuenta del
registro contador asociado a la recepción (16 MSBs) y a la transmisión (16
LSBs) del puerto serie.
·
Registro de datos en transmisión, DXR. Ubicado en la posición 808048H (Puerto Serie0) y en la
posición 808058H (Puerto Serie1). Registro de 32 bits. El usuario escribe en
este registro los datos que desea que transmita el periférico puerto serie. El
puerto serie dispone de un doble buffer en transmisión: El contenido del
registro DXR se vuelca, al iniciar la transmisión del dato por la línea serie,
sobre otro registro que se denomina XSR -registro
de desplazamiento en transmisión-. El registro XSR es el que se encarga de generar la salida
de los bits del dato por la línea DX.
·
Registro de datos en recepción, DRR. Ubicado en la posición 80804CH (Puerto Serie0) y en la
posición 80805CH (Puerto Serie1). Registro de 32 bits. El usuario lee en este
registro los datos que ha recibido el periférico. El puerto serie dispone de un
doble buffer en recepción: Dispone de un registro de desplazamiento en
recepción, denominado RSR, que se encarga de capturar los bits del dato que le
llega al periférico por la línea DR.
Posteriormente, el contenido de RSR se vuelca sobre el registro DRR que es el
registro desde el cual el usuario recoge, por software, el dato recibido.
Figura 4.10. Registros del periférico Puerto Serie del DSP.
Figura
4.11. Registro
Global de configuración y control de los periféricos puertos serie internos del
DSP.
Bit |
Nombre |
Valor de Reset |
Función que realiza |
0 |
RRDY |
0 |
Si
RRDY=1, el buffer de recepción (registro DRR) dispone de datos nuevos listos
para ser leídos. El flanco de subida de esta señal, activa RINT. Luego de
leer el registro DRR, RRDY se pone a 0. Existe un retraso de 3 ciclos de H1
desde que se llena el registro DRR, hasta que se activa RRDY. Si
RRDY=0, el buffer de recepción (registro DRR) no dispone de datos nuevos
listos para ser leídos, luego de la última lectura que se hizo. |
1 |
XRDY |
1 |
Si
XRDY=1, el buffer de transmisión (registro DXR) ha puesto el último bit del
dato que tenía en el registro de desplazamiento para la transmisión (XSR) y
está preparado para recoger un nuevo dato para transmitir. Existe un retraso
de 3 ciclos de H1 desde que se envía el último bit desde DXR hacia XSR, hasta
que se activa XRDY. El flanco de subida de esta señal, activa XINT. Si
XRDY=0, el buffer de transmisión (registro DXR) no ha puesto el último bit
del dato que tenía en el registro de desplazamiento para la transmisión (XSR)
y por tanto, no está preparado para recoger un nuevo dato para transmitir |
2 |
FSXOUT |
0 |
FSXOUT=1,
configura FSX como pin de salida. FSXOUT=0,
configura FSX como pin de entrada. |
3 |
XSREMPTY |
0 |
Si
XSREMPTY=0, indica que el registro de desplazamiento para transmisión, XSR,
está vacío. Si XSREMPTY=1, XSR no está vacío. |
4 |
RSRFULL |
0 |
Si
RSRFULL=1, problemas en recepción (OVERRUN): Tasa de recepción muy alta. En
modo recepción continua, RSRFULL=1 cuando los registros DRR y RSR están
llenos. En modo recepción no continua, RSRFULL=1 cuando los registros DRR y
RSR están llenos y llega un nuevo FSR (comienza a recibirse un nuevo dato). Una
lectura de este bit, un reset del DSP o un reset de la parte de recepción del
periférico, lo ponen a 0. Si
RSRFULL=0, no hay problemas en recepción (OVERRUN). |
5 |
HS |
0 |
HS=1
habilita el modo acuse de recibo. HS=0,
inhabilita el modo acuse de recibo. |
6 |
XCLKSRCE |
0 |
XCLKSRCE=1
habilita el reloj interno como fuente de reloj en transmisión. XCLKSRCE=0
habilita el reloj externo como fuente de reloj en transmisión. |
7 |
RCLKSRCE |
0 |
RCLKSRCE=1
habilita el reloj interno como fuente de reloj en recepción. RCLKSRCE=0
habilita el reloj externo como fuente de reloj en recepción. |
8 |
XVAREN |
0 |
Especifica
el tiempo de activación de los bits en transmisión, FIJO (XVAREN=0) o
VARIABLE (XVAREN=1). Véase modos de transferencia. En modo fijo, FSX
permanece activo al menos un ciclo de XCLK para volver a estar inactivo,
antes de comenzar una transferencia de datos. En modo variable, FSX permanece
activo cuando se están transmitiendo datos (en modo variable, si FSX es
externo, los datos empiezan a transmitirse cuando FSX está activo y siguen
transmitiéndose hasta completar la transferencia, independientemente del
valor de FSX) |
9 |
RVAREN |
0 |
Especifica
el tiempo de activación de los bits en recepción, FIJO (RVAREN=0) o VARIABLE
(RVAREN=1). Véase modos de transferencia. En modo fijo, FSR permanece activo
al menos un ciclo de RCLK para volver a estar inactivo, antes de comenzar una
transferencia de datos. En modo variable, FSR permanece activo cuando se
están recibiendo datos. |
10 |
XFSM |
0 |
Modo
de transmisión síncrona de un conjunto de datos. Configura el modo de
operación en transferencia de múltiples datos: XFSM=1.
Modo continuo. El primer dato transmitido genera FSX, los demás, no. XFSM=0.
Modo estándar. Cada dato transmitido genera FSX. |
11 |
RFSM |
0 |
Modo
de recepción síncrona de un conjunto de datos. Configura el modo de operación
en transferencia de múltiples datos: RFSM=1.
Modo continuo. En la recepción del primer dato se debe generar FSR, en la de
los demás, no hace falta para que sean recibidos. RFSM=0.
Modo estándar. En la recepción de cada dato hay que generar FSR. |
12 |
CLKXP |
0 |
Indica
la polaridad de CLKX. Si CLKXP=0, CLKX es activo a nivel alto. Si CLKXP=1,
CLKX es activo a nivel bajo. |
13 |
CLKRP |
0 |
Indica
la polaridad de CLKR. Si CLKRP=0, CLKR es activo a nivel alto. Si CLKRP=1,
CLKR es activo a nivel bajo. |
14 |
DXP |
0 |
Indica
la polaridad de DX. Si DXP=0, DX es activo a nivel alto. Si DXP=1, DX es
activo a nivel bajo. |
15 |
DRP |
0 |
Indica
la polaridad de DR. Si DRP=0, DR es activo a nivel alto. Si DRP=1, DR es activo
a nivel bajo. |
16 |
FSXP |
0 |
Indica
la polaridad de FSX. Si FSXP=0, FSX es activo a nivel alto. Si FSXP=1, FSX es
activo a nivel bajo. |
17 |
FSRP |
0 |
Indica
la polaridad de FSR. Si FSRP=0, FSR es activo a nivel alto. Si FSRP=1, FSR es
activo a nivel bajo. |
18-19 |
XLEN |
00 |
Estos
dos bits indican el ancho del dato a transmitir: 00 (8 bits), 01 (16 bits),
10 (24 bits) y 11 (32 bits). Todos los datos se encuentran en transmisión,
justificados a derechas en el registro XSR. |
20-21 |
RLEN |
00 |
Estos
dos bits indican el ancho del dato a recibir: 00 (8 bits), 01 (16 bits), 10
(24 bits) y 11 (32 bits). Todos los datos se encuentran en recepción,
justificados a derechas en el registro RSR. |
22 |
XTINT |
0 |
Habilitación
de la interrupción del Temporizador asociado a la parte de transmisión del
puerto serie. Si XTINT=1, se habilita la interrupción de fin de cuenta de
dicho temporizador. |
23 |
XINT |
0 |
Habilitación
de la interrupción de transmisión del puerto serie. Si XINT=1, se habilita la
interrupción por dato transmitido por el puerto serie. La interrupción XINT
generada por el periférico a la CPU, es la OR-lógica entre las dos posibles
fuentes asociadas a la parte de transmisión del puerto serie. |
24 |
RTINT |
0 |
Habilitación
de la interrupción del Temporizador asociado a la parte de recepción del
puerto serie. Si RTINT=1, se habilita la interrupción de fin de cuenta de
dicho temporizador. |
25 |
RINT |
0 |
Habilitación
de la interrupción de recepción del puerto serie. Si RINT=1, se habilita la
interrupción por dato recibido por el puerto serie. La interrupción RINT
generada por el periférico a la CPU, es la OR-lógica entre las dos posibles
fuentes asociadas a la parte de recepción del puerto serie. |
26 |
XRESET |
0 |
Reset
de la parte de transmisión del periférico. Si XRESET=0, la parte de
transmisión del puerto serie se encuentra en estado de reset. Para que
funcione la parte de transmisión del periférico, hay que poner XRESET=1.
Poniendo XRESET=0, no se borra la configuración de la parte de transmisión
del puerto serie, se sitúa el transmisor al comienzo de la transferencia de
un conjunto de datos y se genera una interrupción por transmisión. La
reconfiguración del modo de funcionamiento del periférico en transmisión, se
debe hacer con XRESET=0 aunque es posible cambiar el valor de XFSM sin
necesidad de que XRESET=0. |
27 |
RRESET |
0 |
Reset
de la parte de recepción del periférico. Si RRESET=0, la parte de recepción
del puerto serie se encuentra en estado de reset. Para que funcione la parte
de recepción del periférico, hay que poner RRESET=1. Poniendo RRESET=0, no se
borra la configuración de la parte de recepción del puerto serie y se sitúa
el receptor al comienzo de la transferencia de un conjunto de datos. La
reconfiguración del modo de funcionamiento del periférico en recepción, se
debe hacer con RRESET=0 aunque es posible cambiar el valor de RFSM sin
necesidad de que RRESET=0. |
28-31 |
Reservado |
0-0 |
Se
lee siempre un cero. |
Tabla 4-2. Funciones de los bits del registro de control y configuración de los periféricos temporizadores internos del DSP.
Figura 4.12. Registro de control de los pines FSX, DX y CLKX del periférico
puerto serie del DSP.
Bit |
Nombre |
Valor de Reset |
Función que realiza |
0 |
CLKXFUNC |
0 |
Controla
el modo de funcionamiento de CLKX. Si CLKXFUNC=0, CLKX es una línea de
entrada o salida de propósito general, independiente del periférico. Si
CLKXFUNC=1, CLKX es una línea del periférico. |
1 |
|
0 |
Si
CLKXFUNC=0, entonces CLKX es una línea de entrada o salida de propósito
general. En ese caso, si CLKXI/O=0, CLKX es una línea de entrada de propósito
general mientras que si CLKXI/O=1, CLKX es una línea de salida de propósito
general. |
2 |
CLKXDATOUT |
0 |
El
usuario escribe por software el valor en CLKX cuando se encuentra configurado
como salida de propósito general, accediendo en escritura a este bit. |
3 |
CLKXDATIN |
x |
El
usuario lee por software el valor de CLKX cuando se encuentra configurado
como entrada de propósito general, accediendo en lectura a este bit. |
4 |
DXFUNC |
0 |
Controla
el modo de funcionamiento de DX. Si DXFUNC=0, DX es una línea de entrada o
salida de propósito general, independiente del periférico. Si DXFUNC=1, DX es
una línea del periférico. |
5 |
|
0 |
Si
DXFUNC=0, entonces DX es una línea de entrada o salida de propósito general.
En ese caso, si DXI/O=0, DX es una línea de entrada de propósito general
mientras que si DXI/O=1, DX es una línea de salida de propósito general. |
6 |
DXDATOUT |
0 |
El
usuario escribe por software el valor en DX cuando se encuentra configurado
como salida de propósito general, accediendo en escritura a este bit. |
7 |
DXDATIN |
x |
El
usuario lee por software el valor de DX cuando se encuentra configurado como
entrada de propósito general, accediendo en lectura a este bit. |
8 |
FSXFUNC |
0 |
Controla
el modo de funcionamiento de FSX. Si FSXFUNC=0, FSX es una línea de entrada o
salida de propósito general, independiente del periférico. Si FSXFUNC=1, FSX
es una línea del periférico. |
9 |
|
0 |
Si
FSXFUNC=0, entonces FSX es una línea de entrada o salida de propósito
general. En ese caso, si FSXI/O=0, FSX es una línea de entrada de propósito
general mientras que si FSXI/O=1, FSX es una línea de salida de propósito
general. |
10 |
FSXDATOUT |
0 |
El
usuario escribe por software el valor en FSX cuando se encuentra configurado
como salida de propósito general, accediendo en escritura a este bit. |
11 |
FSXDATIN |
x |
El
usuario lee por software el valor de FSX cuando se encuentra configurado como
entrada de propósito general, accediendo en lectura a este bit. |
31-12 |
Reservado |
0-0 |
Se
lee siempre un cero. |
Tabla 4-3. Funciones de los bits del registro de control de los pines FSX, DX y CLKX del puerto serie del DSP.
Figura 4.13. Registro de control de los pines FSR, DR y CLKR del periférico
puerto serie del DSP.
Bit |
Nombre |
Valor de Reset |
Función que realiza |
0 |
CLKRFUNC |
0 |
Controla
el modo de funcionamiento de CLKR. Si CLKRFUNC=0, CLKR es una línea de
entrada o salida de propósito general, independiente del periférico. Si
CLKRFUNC=1, CLKR es una línea del periférico. |
1 |
|
0 |
Si
CLKRFUNC=0, entonces CLKR es una línea de entrada o salida de propósito general.
En ese caso, si CLKRI/O=0, CLKR es una línea de entrada de propósito general
mientras que si CLKRI/O=1, CLKR es una línea de salida de propósito general. |
2 |
CLKRDATOUT |
0 |
El
usuario escribe por software el valor en CLKR cuando se encuentra configurado
como salida de propósito general, accediendo en escritura a este bit. |
3 |
CLKRDATIN |
x |
El
usuario lee por software el valor de CLKR cuando se encuentra configurado
como entrada de propósito general, accediendo en lectura a este bit. |
4 |
DRFUNC |
0 |
Controla
el modo de funcionamiento de DR. Si DRFUNC=0, DR es una línea de entrada o
salida de propósito general, independiente del periférico. Si DRFUNC=1, DR es
una línea del periférico. |
5 |
|
0 |
Si
DRFUNC=0, entonces DR es una línea de entrada o salida de propósito general.
En ese caso, si DRI/O=0, DR es una línea de entrada de propósito general
mientras que si DRI/O=1, DR es una línea de salida de propósito general. |
6 |
DRDATOUT |
0 |
El
usuario escribe por software el valor en DR cuando se encuentra configurado
como salida de propósito general, accediendo en escritura a este bit. |
7 |
DRDATIN |
x |
El
usuario lee por software el valor de DR cuando se encuentra configurado como
entrada de propósito general, accediendo en lectura a este bit. |
8 |
FSRFUNC |
0 |
Controla
el modo de funcionamiento de FSR. Si FSRFUNC=0, FSR es una línea de entrada o
salida de propósito general, independiente del periférico. Si FSRFUNC=1, FSR
es una línea del periférico. |
9 |
|
0 |
Si
FSRFUNC=0, entonces FSR es una línea de entrada o salida de propósito
general. En ese caso, si FSRI/O=0, FSR es una línea de entrada de propósito
general mientras que si FSRI/O=1, FSR es una línea de salida de propósito
general. |
10 |
FSRDATOUT |
0 |
El
usuario escribe por software el valor en FSR cuando se encuentra configurado
como salida de propósito general, accediendo en escritura a este bit. |
11 |
FSRDATIN |
x |
El
usuario lee por software el valor de FSR cuando se encuentra configurado como
entrada de propósito general, accediendo en lectura a este bit. |
31-12 |
Reservado |
0-0 |
Se
lee siempre un cero. |
Tabla 4-4. Funciones de los bits del registro de control de las líneas FSR, DR y CLKR del puerto serie del DSP.
Figura 4.14. Registro de configuración y control de los temporizadores del
periférico interno puerto serie del DSP.
Bit |
Nombre |
Valor de Reset |
Función que realiza |
0 |
XGO |
0 |
Reinicializa
los 16 LSBs del registro contador del periférico (contador del temporizador
de transmisión). Cuando XGO=1 y el temporizador no se encuentra en estado de
paro, el contador del temporizador de transmisión se pone a cero. El
siguiente flanco de subida del reloj empleado como entrada al periférico
sirve para incrementar dicho contador y para poner a cero el bit XGO. XGO=0
no tiene efectos sobre el estado o funcionamiento del periférico. |
1 |
|
0 |
Señal
de mantenimiento en paro del contador. Cuando XHLD=0, se impide el incremento
del registro contador del temporizador de transmisión, que mantiene el valor
que tenía antes de que se activase XHLD. El divisor interno por 2 de f(H1) se
para. Cuando XHLD=1, el contador sigue por donde iba. Los registros del
periférico se PUEDEN leer y escribir mientras el periférico esté en paro. La
señal de XRESET tiene prioridad sobre XHLD. |
2 |
|
0 |
Control
de la forma de onda de XTSTAT: modo pulso o modo reloj. XC/P=1 selecciona el
modo reloj, mientras que XC/P=0 selecciona el modo pulso. Análogo al periférico
temporizador interno del DSP. |
3 |
XCLKSRC |
0 |
Especifica
la fuente de reloj al temporizador. XCLKSRC=1, indica el uso del reloj
interno de frecuencia f(H1)/2. XCLKSRC=0, indica el uso del reloj externo
(pin CLKX) de frecuencia programable que siempre debe ser menor que f(H1)/2.6
(el reloj externo se sincroniza, latchea, internamente limitándose la
frecuencia máxima de dicho reloj a valores estrictamente menores de f(H1)/2). |
4 |
Reservado |
0 |
Se
lee siempre un cero. |
5 |
XTSTAT |
0 |
Indica
el estado del temporizador de transmisión del periférico. Este bit activa (en
un flanco de subida) el correspondiente bit de petición de interrupción a la
CPU. |
6 |
RGO |
0 |
Reinicializa
los 16 MSBs del registro contador del periférico (contador del temporizador
de recepción). Cuando RGO=1 y el temporizador no se encuentra en estado de
paro, el contador del temporizador de recepción se pone a cero. El siguiente
flanco de subida del reloj empleado como entrada al periférico sirve para
incrementar dicho contador y para poner a cero el bit RGO. RGO=0 no tiene
efectos sobre el estado o funcionamiento del periférico. |
7 |
|
0 |
Señal
de mantenimiento en paro del contador. Cuando RHLD=0, se impide el incremento
del registro contador del temporizador de recepción, que mantiene el valor
que tenía antes de que se activase RHLD. El divisor interno por 2 de f(H1) se
para. Cuando RHLD=1, el contador sigue por donde iba. Los registros del
periférico se PUEDEN leer y escribir mientras el periférico esté en paro. La
señal de RRESET tiene prioridad sobre RHLD. |
8 |
|
0 |
Control
de la forma de onda de RTSTAT: modo pulso o modo reloj. RC/P=1 selecciona el
modo reloj, mientras que RC/P=0 selecciona el modo pulso. Análogo al
periférico temporizador interno del DSP. |
9 |
RCLKSRC |
0 |
Especifica
la fuente de reloj al temporizador. RCLKSRC=1, indica el uso del reloj
interno de frecuencia f(H1)/2. RCLKSRC=0, indica el uso del reloj externo
(pin CLKR) de frecuencia programable que siempre debe ser menor que f(H1)/2.6
(el reloj externo se sincroniza, latchea, internamente limitándose la
frecuencia máxima de dicho reloj a valores estrictamente menores de f(H1)/2). |
10 |
Reservado |
0 |
Se
lee siempre un cero. |
11 |
RTSTAT |
0 |
Indica
el estado del temporizador de recepción del periférico. Este bit activa (en
un flanco de subida) el correspondiente bit de petición de interrupción a la
CPU. |
31-12 |
Reservado |
0-0 |
Se
lee siempre un cero. |
Tabla 4-5. Funciones de los bits del registro de configuración y control de los temporizadores del periférico interno puerto serie del DSP.