Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Departamento: Electrónica
Matricula: 11140862
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 ktí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]
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)
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 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.
//--------------------------------------------------------------------------------
-----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.
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);
}
}
Materiales
MSP430G2553
MCP4911
Protoboard
Alambre para protoboard
Osciloscopio
Puntas para osciloscopio
Multímetro
8
DIAGRAMA
3.3. RESULTADOS
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
4. CONCLUSIONES
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
[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 **
}
#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
13