Está en la página 1de 13

INSTITUTO TECNOLÓGICO DE QUERÉTARO

Departamento: Electrónica

Carrera: Ingeniería Electrónica

Nombre y clave de la materia: Comunicaciones Digitales, ETD1022.

Número y nombre del trabajo o práctica: Esquema de codificación Polar: MANCHESTER

Alumno: Cruz García Iván Daniel

Matricula: 11140862

Profesor. CASTELLANOS GALINDO JOSE JOAQUIN

Fecha de entrega: 03 de junio del 2015

RESUMEN

En el siguiente documento se presenta el desarrollo para realizar la transmisión de datos utilizando un esquema de
codificación polar: MANCHESTER e forma didáctica, incorporando el microcontrolador Msp4302553 como
intermediario y la DAC MCP4911, se muestra el desarrollo del programa en c utilizando el software Code
Composer Studio, materiales utilizados y los resultados obtenidos por el osciloscopio de manera gráfica, .

1
ÍNDICE Pagina.

1. Objetivos 3
1.1. Objetivos generales 3
1.2. Objetivos específicos 3
2. Introducción teórica 3
2.1.DAC 3
2.2. MCP4911 3
2.3. Comunicación SPI 4
2.4.MODULO SPI EN MSP430G2553 4
2.5.Esquema de comunicación polar (Manchester) 5

3. Desarrollo 6
3.1. Explicación general del programa 6
3.2.Diagramas y Materiales 8
3.3.Resultados 9

4. Conclusiones 10
5. Referencias Bibliográficas 11
6. Anexos 11

2
1. Objetivos
1.1. Objetivos generales
Realizar la transmisión de datos con un esquema de codificación polar (Manchester)
utilizando el DAC MCP4911 y el MSP430G2553 mediante SPI con la finalidad de
obtener de manera visual mediante el osciloscopio los datos transmitidos.
1.2. Objetivos específicos
 Seguir el esquema de codificación polar (Manchester) para la transmisión de
datos.
 Representar de manera gráfica los datos enviados a la DAC.
2. INTRODUCCIÓN TEÓRICA
2.1. DAC
Un conversor de señal digital a analógica o conversor digital analógico, CDA o DAC
(del inglés digital to analogue converter) es un dispositivo para convertir señales
digitales con datos binarios en señales de corriente o de tensión analógica.[1]
2.2. MCP4911
El dispositivo 4911 es un convertidor digital analógico (DAC), respectivamente. El
dispositivo opera desde 2.7V a 5.5V de alimentación con una compatible interfaz serie
con el periférico SPI. El usuario puede configurar el rango de escala completa del
dispositivo para que sea VREF o 2 * VREF estableciendo el bit de opción de selección
de ganancia (ganancia de 1 de 2).
El usuario puede apagar el dispositivo mediante el ajuste de la configuración
Regíster bit. En el modo de apagado, la mayor parte de los circuitos internos se apagan
para ahorrar energía, y el amplificador de salida está configurado para presentar una
conocida carga de salida alta resistencia (500 ktípico). El dispositivo incluye los
registros de doble búfer, permitiendo actualizaciones síncronas de la salida de la DAC
utilizando el candado MCAI. Este dispositivo también incorporan un Power-on Reset

3
(POR) de circuito para asegurar el encendido fiable. El dispositivo utiliza una
arquitectura de cadena resistiva, con sus ventajas inherentes de bajo diferencial No
linealidad (DNL) de error y tiempo de establecimiento rápido. Este dispositivo es tiene
un rango de temperatura de (125 ° C). El dispositivo ofrece una alta precisión y bajo
nivel de ruido rendimiento para aplicaciones industriales y de consumo donde la
calibración o la compensación de las señales (por ejemplo, se requieren temperatura,
presión y humedad). [2]

2.3. COMUNICACIÓN SPI


Spi es un bus de tres líneas, sobre el cual se transmiten paquetes de información de 8
bits. Cada una de estas tres líneas porta la información entre los diferentes dispositivos
conectados al bus. Cada dispositivo conectado al bus puede actuar como transmisor y
receptor al mismo tiempo, por lo que este tipo de comunicación serial es full duplex.
Dos de estas líneas trasfieren los datos (una en cada dirección) y la tercer línea es la del
reloj.
Algunos dispositivos solo pueden ser transmisores y otros solo receptores,
generalmente un dispositivo que tramite datos también puede recibir. Un ejemplo
podría ser una memoria EEPROM, el cual es un dispositivo que puede transmitir y
recibir información.
Los dispositivos conectados al bus son definidos como maestros y esclavos. Un maestro
es aquel que inicia la transferencia de información sobre el bus y genera las señales de
reloj y control.
Un esclavo es un dispositivo controlado por el maestro. Cada esclavo es controlado
sobre el bus a través de una línea selectora llamada Chip Select o Select Slave, por lo
tanto es esclavo es activado solo cuando esta línea es seleccionada. Generalmente una
línea de selección es dedicada para cada esclavo. En un tiempo determinado T1, solo
podrá existir un maestro sobre el bus. Cualquier dispositivo esclavo que no esté
seleccionado, debe deshabilitarse (ponerlo en alta impedancia) a través de la línea
selectora (chip select). [3]
2.4. MODULO SPI EN MSP430G2553

4
En el modo síncrono, la USCI conecta el MSP430 a un sistema externo a través de tres
o cuatro pines: UCxSIMO, UCxSOMI, UCxCLK, y UCxSTE. El Modo de SPI se
selecciona cuando el bit UCSYNC se establece y SPI mode (3 pines o 4 pines) se
selecciona con los bits UCMODEx. [4]
Características del modo SPI, incluyen:
• 7 o 8 bits de longitud
• LSB-primero o MSB-primero de transmisión y recepción de datos
• 3 pin y 4 pin de operación SPI
• Los modos de maestro o esclavo
• Transmisión Independiente y recibir registros de desplazamiento
• Transmisión independiente y recibir registros del búfer
• Transmisión continua y operación de recepción
• Polaridad de reloj seleccionable y control de fase
• Frecuencia de reloj programable en modo maestro
• Capacidad de interrupción independiente para recibir y transmitir
• Funcionamiento esclavo en LPM4
2.5. Esquema de comunicación polar (Manchester)

La codificación Manchester, también denominada codificación bifase-L, es un método de


codificación eléctrica de una señal binaria en el que en cada tiempo de bit hay una transición
entre dos niveles de señal. Es una codificación autosincronizada, ya que en cada bit se puede
obtener la señal de reloj, lo que hace posible una sincronización precisa del flujo de datos.
Una desventaja es que consume el doble de ancho de banda que una transmisión asíncrona.
Hoy en día hay numerosas codificaciones (8b/10b) que logran el mismo resultado pero
consumiendo menor ancho de banda que la codificación Manchester.

 Las señales de datos y de reloj, se combinan en una sola que auto-sincroniza el flujo
de datos.
 Cada bit codificado contiene una transición en la mitad del intervalo de duración de
los bits.
 Una transición de negativo a positivo representa un 1 y una transición de positivo a
negativo representa un 0.

5
Figura 1.Esquema Codificación Polar Manchester.

3. Desarrollo
3.1. Explicación general del programa

Configuración del watchdog, se utiliza para apagar el watchdog

WDTCTL = WDTPW + WDTHOLD; // parar el watchdog timer

Configuración de los relojes, para la operación del microcontrolador, con este se obtiene una
referencia de sincronía de reloj para los periféricos que se utilizaran posteriormente como son
el Timer_A, USCI modo spi.

DCOCTL = 0; // Select lowest DCOx and MODx settings


BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;

Configuración del USCI_B y A, se configuran los puertos para la comunicación SCI, se


direccionan los pines para el módulo de comunicación, se selecciona la fuente de reloj, se
configura en modo maestro, modo spi y por último se inicializan la máquina de estados del
módulo de comunicación

//--------------------------------------------------------------------------------
-----Configuración del USCI modo UART RX y TX-------------------//
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD//0X006
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD/0X006
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulación UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state
machine**

6
//--------------------------------------------------------------------------------
-----Configuración del USCI SPI------------------------------//
P1OUT = 0X0018; //BIT3 Y BIT 4
P1DIR = 0X0018; //BIT3 Y BIT4
P1SEL |= BIT5+BIT6+BIT7; //0X00E0
P1SEL2 |= BIT5+BIT6+BIT7; //0X00E0
UCB0CTL1 = UCSWRST;
UCB0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC;
UCB0CTL1 |= UCSSEL_2;
UCB0BR0 |= 1;
UCB0BR1 = 0;
UCB0CTL1 &= ~ UCSWRST; // ** Inicializar máquina de estados USCI **

Se habilitan las interrupciones, se llaman las instrucciones de bajo consumo( low power mode)
para que el microcontrolador se suspenda mientras no atienda ninguna ISR.

IE2 |= UCA0RXIE; // habilitar interrupciones USCI_A0 RX


_enable_interrupt();
write_to_DAC(512);
__bis_SR_register(LPM0_bits+GIE); // Entrar LPM0, interrupciones habilitadas
}

Para ejecutar el envio por Esquema polar Manchester hacia el microcontrolador, se


implementa la siguiente solución con la ISR asociada a la recepción UART del USCI_A, dentro
se descompone el carácter en formato ascii recibido, en un arreglo de bits dentro del
microcontrolador; el arreglo almacenado se envía elemento por elemento hacia el convertidor
digital analógico mediante la función escribit_en_dac, dicho convertidor generará las señales
de voltaje correspondientes de la comunicación NRZI estableciendo los valores discretos de la
línea cuando es un cero lógico, uno lógico y “no data”.

#pragma vector=USCIAB0RX_VECTOR // Rutina de Servicio de Interrupción


__interrupt void USCI0RX_ISR(void)
{
for (i=0; i<=7; i++)
{
m[i]=((1<<i)&UCA0RXBUF)>>i;
}
manchester(1);
for (i=0; i<=7; i++)
{
manchester (m[7-i]);
}
manchester(1);
escribir_en_dac(512);
}
void escribir_en_dac(int x)
{

7
x=4*x;
while (!(IFG2 & UCB0TXIFG));
P1OUT &= (~ 0x0008); // Seleccionar dispositivo//0X0020//chip select
P1OUT |=0x0010;//0X0040
UCB0TXBUF = 0x30|(x/256);//
while (!(IFG2 & UCA0TXIFG));
UCB0TXBUF = 0xFC & x ; //
__delay_cycles(8);
P1OUT |= 0x0008; // Dispositivo se Deselecciona
P1OUT &= ~0x0010;
}
void manchester(int y)
{
if(y==1)
{
escribir_en_dac(0);
__delay_cycles(500);
escribir_en_dac(1023);
__delay_cycles(500);
}
else
{
escribir_en_dac(1023);
__delay_cycles(500);
escribir_en_dac(0);
__delay_cycles(500);
}
}

3.2. Diagramas y materiales

Materiales

 MSP430G2553
 MCP4911
 Protoboard
 Alambre para protoboard
 Osciloscopio
 Puntas para osciloscopio
 Multímetro

8
DIAGRAMA

El diagrama implementado entre el microcontrolador y el convertidor DAC, muestra que la


salida analógica de convertidor es enviada al osciloscopio el cual muestra el envió del tren
de datos., Se muestra en el anexo 2 una foto del ensamble del circuito.

Figura 2. Diagrama esquemático, conexión entre micro-DAC.

3.3. RESULTADOS

Se realizo la transmisión de datos utilizando un esquema de codificación polar Manchester,


incorporando el microcontrolador Msp4302553 como intermediario y la DAC MCP4911.

Para ejecutar él envió por codificación polar Manchester hacia la DAC, se implementa la
siguiente solución con la ISR asociada a la recepción UART del USCI_A, dentro se
descompone el carácter en formato ascii recibido, en un arreglo de bits dentro del
microcontrolador; el arreglo almacenado se envía elemento por elemento hacia el convertidor
digital analógico mediante la función write_to_dac, dicho convertidor generará las señales de
voltaje correspondientes de la codificación polar Manchester estableciendo los valores

9
discretos de la línea cuando es un cero lógico, uno lógico y “no data”, en el anexo 1 se puede
mostrar el programa realizado.

En la figura 3 se puede observar la tren de `pulsos que produce el convertidor DAC para
simular la señal Manchester correspondiente a algunos caracteres en formato ascii.

RESPUESTA

Figura 3. Respuesta de salida del DAC.

4. CONCLUSIONES

La comunicación UART del microcontrolador no presento ningún fallo en ningún momento,


lo que comprueba que el reloj interno del microcontrolador es estable a una frecuencia de 1
MHz y dividiendo el valor entre 104 esta comunicación serial es estable a 9600.

La comunicación SPI del microcontrolador y la DAC proporciona un soporte firme pues no se


tuvo ningún problema de amplitud ni tiempo para generar la salida analógica del convertidor
DAC.

En la transmisión de la codificación polar Manchester tuvo problemas ligeros debido a que el


ensamble se realizó con un protoboard como se muestra en el anexo 2, produciendo falsos y
desconexiones de la línea lo que nos arrojó una tasa de un bit erróneo en algunas ocasiones,
debe de señalarse que esta interferencia puede ser solucionada montando la DAC en una placa
y utilizando cables dupond.

10
5. REFERENCIAS

[1] Wikipedia. (21 junio 2014). Conversor de señal digital a analógica. Consulta realizada
el: 21 de julio de 2014, Desde:

http://es.wikipedia.org/wiki/Conversor_de_se%C3%B1al_digital_a_anal%C3%B3gica

[2] alldatasheet. (2013). MCP4911 Datasheet (PDF) - Microchip Technology. Consulta


realizada el: 21 de julio de 2014, Desde: http://pdf1.alldatasheet.com/datasheet-
pdf/view/345877/MICROCHIP/MCP4911.html

[3] i-micro. (S.F.). Protocolo SPI ( Serial Peripherical Interface). Consulta realizada el:
21 de julio de 2014, Desde: http://www.i-micro.com/pdf/articulos/spi.pdf

[4] ti. (S.F.). msp430g2553. Consulta realizada el: 21 de julio de 2014, Desde:
http://www.ti.com/lit/ds/symlink/msp430g2553.pdf

6. Anexos.

Anexos 1. Programa
#include <msp430g2553.h>
volatile unsigned int i;
volatile unsigned int m[8];
void escribir_en_dac(int);
void manchester (int);
int main(void) {
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
DCOCTL = 0; // Select lowest DCOx and MODx
settings
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
//-----------------------------------------------------------------------------------
--Configuración del USCI modo UART RX y TX-------------------//
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD//0X006
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD/0X006
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulación UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
//-----------------------------------------------------------------------------------
--Configuración del USCI SPI------------------------------//
P1OUT = 0X0018; //BIT3 Y BIT 4
P1DIR = 0X0018; //BIT3 Y BIT4

11
P1SEL |= BIT5+BIT6+BIT7; //0X00E0
P1SEL2 |= BIT5+BIT6+BIT7; //0X00E0
UCB0CTL1 = UCSWRST;
UCB0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC;
UCB0CTL1 |= UCSSEL_2;
UCB0BR0 |= 1;
UCB0BR1 = 0;
UCB0CTL1 &= ~ UCSWRST; // ** Inicializar máquina de estados USCI **

IE2 |= UCA0RXIE; // habilitar interrupciones USCI_A0 RX


_enable_interrupt();
escribir_en_dac(512);
__bis_SR_register(LPM0_bits+GIE);

}
#pragma vector=USCIAB0RX_VECTOR // Rutina de Servicio de Interrupción
__interrupt void USCI0RX_ISR(void)
{
for (i=0; i<=7; i++)
{
m[i]=((1<<i)&UCA0RXBUF)>>i;
}
manchester(1);
for (i=0; i<=7; i++)
{
manchester (m[7-i]);
}
manchester(1);
escribir_en_dac(512);
}
void escribir_en_dac(int x)
{
x=4*x;
while (!(IFG2 & UCB0TXIFG));
P1OUT &= (~ 0x0008); // Seleccionar dispositivo//0X0020//chip select
P1OUT |=0x0010;//0X0040
UCB0TXBUF = 0x30|(x/256);//
while (!(IFG2 & UCA0TXIFG));
UCB0TXBUF = 0xFC & x ; //
__delay_cycles(8);
P1OUT |= 0x0008; // Dispositivo se Deselecciona
P1OUT &= ~0x0010;
}
void manchester(int y)
{
if(y==1)
{
escribir_en_dac(0);
__delay_cycles(500);
escribir_en_dac(1023);
__delay_cycles(500);
}
else
{
escribir_en_dac(1023);

12
__delay_cycles(500);
escribir_en_dac(0);
__delay_cycles(500);
}
}

Anexo 2. CIRCUITO

Figura 4. Circuito armado en protoboard.

13

También podría gustarte