(SPI) Módulo Serial Sincrónico

Documentos relacionados
Curso sobre Microcontroladores Familia HC9S08 de Freescale

COMUNICACIÓN SERIAL FAMILIA DSP56800: Síncronas y Asíncronas CAPÍTULO VII

MONITOR ROM MODULE (MON08)

CLOCK GENERATION MODULE (CGM) Módulo de Generación de Clock

Curso sobre Microcontroladores Familia HC9S08 de Freescale

RESETS & INTERRUPCIONES

SPI. Teoría y Aplicaciones. INGENIERIA EN MICROCONTROLADORES Protocolo SPI( Serial Peripherical Interface) Protocolo

Curso sobre Microcontroladores Familia HC9S08 de Freescale

El Protocolo SPI. IES Juan de la Cierva. Aprendizaje de la Electrónica a través de la Robótica. Fernando Remiro Domínguez

I2C. Ing. Pablo Martín Gomez

Control remoto del EDUKIT08 vía PC...

Analog To Digital Converter. Module (ADC) Curso de Microcontroladores Familia HC908 Flash de Freescale Parte II ING.

Taller de Firmware. Introducción al PIC16F877. Facultad de Ingeniería Instituto de Com putación

Hablemos de MCU s... Practicando con el CodeWarrior 5.1/6.x y el sistema R(S)_POD... COMENTARIO TECNICO

MICROCONTROLADORES PIC

ITT-327-T Microprocesadores

Microprocesadores, Tema 8:

28/09/2012. Interfaz con Dispositivos de Salida. Interfaz con Dispositivos de Entrada. Port Mapped. Memory mapped. Interfaz con Dispositivos I/O

APUNTE DEL 8155 ELECTRÓNICA DIGITAL III

Controlador de Interrupciones (Versión programable) Manual de Usuario

Introducción a la Entrada/Salida

Descripción General de un Microcontrolador (Módulos de Comunicación)

CONTROLADOR DE TARJETA SD

Problemario: Memoria / Entrada Salida / Buses / Interrupciones

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Registros SFR vistos hasta ahora: Microcontroladores PIC

Curso sobre Microcontroladores Familia HC9S08 de Freescale

5. Microcontroladores de 32 bits. (C) 2007 Ibercomp S. A.

PCF8574 EXPANSOR REMOTO 8-BIT I/O PARA I²C-BUS

Módulo SPI y métodos de conversión D-A

Tópicos Especiales de Mecatrónica

Técnicas Digitales III

Estructura de Microprocesadores

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

Pines de entrada/salida (I/O) de propósito general. Mediante ellos, el micro PIC puede monitorizar y controlar otros dispositivos.

TECLADO TACTIL CAPACITIVO SIGMA ELECTRONICA

Buceando en el HC908...

Modulo LCD MODULO LCD

Tutoría 2. Banco de memoria de 8 y 16 bits (8086)

Diseño Basado en Microcontroladores. Programa Detallado

Guía rápida para gestionar el puerto paralelo del PC

Como sacarle mayor provecho a las herramientas disponibles para la familia HC908

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Puertos de Entrada/Salida

PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719

Motorola MC68HC908JK3/JK1

Lector de códigos de barras con microcontrolador Motorola HC11

Soluciones de Seguridad de Freescale 1ª parte: VKSP (Variable Key Security Protocol)

VOCABULARIO DEL HARDWARE. Docente Yeni Ávila

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO

Temporizadores y contadores en tiempo real: El módulo Timer0 del PIC.

PIC16F882/883/884/886/887

Señal de petición de Interrupción

AUTOMATIZACIÓN - CURSO: Práctica 4: Sistema de Monitorización de tiempo mediante Arduino

Guía de práctica. Dispositivo

Arquitectura de Computadoras. Anexo Clase 8 Buses del Sistema

UART. Diseño de Sistemas con FPGA 1er cuatrimestre 2013 Patricia Borensztejn

Sistemas con Microcontroladores y Microprocesadores

NVIC : Nested Vectored Interrupt Controller

Bus I 2 C. Introducción

Lanzamiento de nueva versión KIT PLUGIN_AW... Ahora aprender C es más fácil!

Timer s Escuela Superior de Cómputo IPN. Departamento de Posgrado Dr. Julio Cesar Sosa Savedra curso.escom@yahoo.com

DISPLAY LCD MICROPROCESADORES

0-31 : caracteres de control : carac. Comunes : especiales (flechas, símbolos) y particulares (ñ)

Electrónica Digital II

Prueba del Driver ModBus

Programación del Timer1 para la captura de flancos

Winide y Kit EVALQTY CDM 2011

ARQUITECTURA DE LAS COMPUTADORAS. UNIDAD 7: Unidades de Entrada-Salida

2º CURSO INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN TEMA 5 ENTRADA/SALIDA. JOSÉ GARCÍA RODRÍGUEZ JOSÉ ANTONIO SERRA PÉREZ Tema 5.

Contenido TEMA 2 ENTRADA / SALIDA. Interfaz HW: buses del sistema. Interfaz HW de E/S

Microcontroladores de Atmel

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Diseño con Microcontroladores

RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2. RB1 RB0/INT VDD Vss RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RC7/RX/DT RC6/TX/CK RC5/SD0 RC4/SDI/SDA RD3/PSP3 RD2/PSP2

Transmisi n de Datos a Trav s de un PIC

El módulo LCD Ejemplos de funcionamiento

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Laboratorio de Sistemas Embebidos Conceptos generales (2009)

TEMA 6.- INTERFACES PARA DISCOS DUROS. nexo de conexión que facilita la comunicación entre dos dispositivos

Comunicación MM4 - USS - S7-200

Mapeo en el P 8086 de Intel

CONTEXTO DE LA MEMORIA EN UN SISTEMA DE CÓMPUTO M E M O R I A S

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC

e-basic......haciendo de la Microcomputación un mundo más fácil y entretenido!!!

GUIA GENERAL PARA LA PROGRAMACIÓN DEL SISTEMA EB88 BOOTLOADER: TINY INDICE

ISP (Programación en sistema) de los microcontroladores de NXP (Philips) 89LPC9XX utilizando Flash Magic y la UART (puerto serie) del microcontrolador

INTERRUPCIONES. La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales:

HERRAMIENTAS DE DESARROLLO HARDWARE & SOFTWARE

GUIA GENERAL PARA LA PROGRAMACIÓN DEL SISTEMA PICCITO 16F88 INDICE

MODBus RTU en los registradores CAMRegis

PIC 18F45XX EL TIMER 0

COMUNICACIÓN I2C (INTER-INTEGRATED CIRCUIT)

Análisis general de un Microprocesador

INTERRUPCIONES. Existen 256 interrupciones En el modo real cada una tiene un vector asociado Vectores de 4 bytes: segmento + offset 32 F0 50 8A

Comunicación Serie IIC: Inter-Integrated Circuit

INTRODUCCIÓN. Interrupciones.

Especificaciones técnicas. Power, Inputs and Outputs. Operating Voltage Input Voltage (recommended) Input Voltage (limits) Analog Input Pins

1-Introducción. KIT ARM- Ténicas Digitales II - Ing. Ruben M. Lozano /9

ESTRUCTURA BÁSICA DE UN ORDENADOR

Transcripción:

SERIAL PERIPHERAL INTERFACE (SPI) Módulo Serial Sincrónico

SERIAL PERIPHERAL INTERFACE MODULE Clock Generation Module (CGM) System Integration Module (SIM) LVI COP IRQ BREAK RESET 68HC08 CPU Timer Interface Module (TIM) Direct Memory Access Module (DMA) Internal Bus (IBUS) Serial Communications Interface (SCI) Serial Peripheral Interface (SPI) Random Access Memory (RAM) Electronically Programmable ROM Monitor ROM Las caracteristicas del módulo SPI incluyen lo siguiente: Operación Full-Duplex Modos Master y Slave Registros separados Transmit y Receive 4 Frecuencias modo Master ( Máximo = Bus Frequency / 2 ) Frecuencia Máxima modo Slave = Bus Frequency Serial Clock con Polaridad y Fase programables Flag de error Bus Contention ( contención del Bus ) Flag Overrun Error 2 habilitaciones de interrupción separadas : SPRF (SPI Receiver Full) SPTE (SPI Transmitter Empty) Modo programable Wired-OR Compatibilidad I2C (Inter-Integrated Circuit)

Registros I/O del SPI Tres registros controlan y monitorean las operaciones del SPI : SPI Control Register (SPCR) SPI Status and Control Register (SPSCR) SPI Data Register (SPDR)

Modos del SPI Modo Master (Amo) Solamente un SPI master inicia la transmisión Los Datos son desplazados hacia afuera via la linea Master Out Slave In (MOSI) Los Datos son desplazados hacia adentro via la linea Master In Slave Out (MISO) La Transmisión finaliza después de 8 ciclos del serial clock (SPSCK), ya que se trata de una transmisión serial sincrónizada con el Clock generado por el master y cada dato está sincronizado con dicho clock (8 pulsos de clock y no mas que ello). Modo Slave (Esclavo) Transferencia sincronizada al serial clock (SPSCK) desde el Master Los Datos son desplazados hacia adentro via la linea Master Out Slave In (MOSI) Los Datos son desplazados hacia afuera via la linea Master In Slave Out (MISO)

MASTER Shift Register Pin selección Slave MOSI MISO SLAVE Shift Register Baud Rate Gen. SPSCK SS +5v Slave Select (SS) SS Modo Master SS se mantiene alto ( 1 ) durante la transmisión (se fuerza a 1 ) Actua como una entrada de detección de error (si algo la fuerza a 0, hay un error!!) Puede ser una salida de propósitos generales. Modo Slave SS debe permanecer bajo ( 0 ) hasta que se completa la transmisión (forma de habilitar al dispositívo slave ) 0 = Habilita el slave 1 = Deshabilita el slave

SPCR READ: WRITE: SPI Control Register SPRIE DMAS SPMSTR CPOL CPHA SPWOM SPE SPTIE SPI Control Register (SPCR) RESET: 0 0 0 0 1 0 0 0 SPI Master (SPMSTR) Selección del modo de operación master o slave 1 = Modo Master 0 = Modo Slave SPI Enable (SPE) 1 = Habilita el SPI module 0 = Deshabilita SPI module SPI Master y Slave necesitan seteo de polaridad y fase de clock identicas (1*) Clock Polarity (CPOL) Determina el estado del clock cuando esta idle Clock Phase (CPHA) 1 = Comienza la captura de datos en el 2do. flanco del ciclo de clock 0 = Comienza la captura de datos en el 1er. Flanco del ciclo de clock* 1* NOTA: Consultar en el manual de datos del MCU elegído y del dispositívo SPI a conectar, para determinar con exactitud el seteo de los bits CPOL y CPHA para una correcta comunicación entre ambos.

Baud Rate del SPI SPSCR READ: SPRF 0 OVRF MODF SPTE WRITE: 0 SPR1 SPR0 RESET: 0 0 0 0 1 0 0 0 SPI Status and Control Register (SPSCR) SPI rate select bits (SPR1, SPR0) (selección velocidad) Setea la frecuencia del Master SPSCK clock No tiene efecto en los dispositivos Slave Baud Rate = CGMOUT / Baud Rate Divisor SPR1:SPR0 00 01 10 11 System Clock Divided By 2 8 32 128 Baud Rate (System Clock Freq. = 8 MHz) 2 MHz 500 KHz 125 KHz 31,25 KHz

SPI Data Register SPDR READ: WRITE: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESET: UNAFFECTED BY RESET SPI Data Register (SPDR) Buffer de Lectura / Escrituta para los datos SPI Operación de escritura Escribe datos al transmit data register Operación de lectura Lee datos en el receive data register Un SOLO buffer tanto para la lectura de datos (recepción) como para la escritura de datos (transmisión). Tener en cuenta que en una conexión SPI, los datos forman un anillo circular entre los buffers del dispositivo master y el dispositívo slave.

Flags de estados del SPI SPSCR READ: SPRF 0 OVRF MODF SPTE 0 SPR1 SPR0 WRITE: RESET: 0 0 0 0 1 0 0 0 SPI Status and Control Register (SPSCR) SPI Receiver Full (SPRF) Seteado cuando un byte es desplazado desde el shift register al receive data register Limpiado por la lectura del SPSCR luego de la lectura del SPDR. 1 = Receive data register full 0 = Receive data register not full SPI Transmitter Empty (SPTE) Seteado cuando un byte se transfiere desde el SPDR al shift register Limpiado por la lectura del SPDR register 1 = Transmit data register vacio 0 = Transmit data register no vacio

Interrupciones del SPI SPCR READ: WRITE: SPRIE DMAS SPMSTR CPOL CPHA SPWOM SPE SPTIE RESET: 0 0 0 0 1 0 0 0 SPI Control Register (SPCR) SPI Receiver Interrupt Enable Bit (SPRIE) Interrupción generada cuando se setea el flag SPRF SPI Transmit Interrupt Enable (SPTIE) Interrupción generada cuando se setea el flag SPTE 1 = Interrupción habilitada 0 = Interrupción deshabilitada Direct Memory Access Select (DMAS) No disponible en esta familia de HC08!!!

Inicialización Sequencia de inicialización del SPI 1) Inicializar la frecuencia de clock del SPI ( SPR1 y SPR0 en SPSCR ) 2) Setear la configuración del clock ( bits CPOL y CPHA en SPSCR ) 3) Seleccionar operación Master/Slave ( SPMSTR en SPCR ) 4) Habilitar las interrupciones si es necesario ( SPTIE, SPRIE en SPCR ) 5) Habilitar el sistema SPI ( SPE en SPCR ) Deberá habilitarse el dispositívo Master antes del Slaves!!! (Para evitar falsas operaciones)

Transferencia -- Master a Slave Operación Poleada simple ( x polling ) 1) Inicializar el SPI 2) Seleccionar el SS en el dispositívo Slave ( hardware dependiente ) 3) Escribir un byte en el SPDR 4) En espera de la activación del Flag SPI Transmitter Empty (SPTE) 5) Leer el SPDR 6) Liberar el SS en dispositívo Slave ( hardware dependiente )

Información Adicional Modo Wired-Or SPCR READ: WRITE: SPRIE DMAS SPMSTR CPOL CPHA SPWOM SPE SPTIE RESET: 0 0 0 0 1 0 0 0 SPI Control Register (SPCR) SPI Wired OR Mode (SPWOM) Configura las salidas MISO, MOSI, y al SPSCK como open-drain Permite sistemas de Masters Múltiples Provee algo de protección contra el CMOS latchup.

Información Adicional Flags de estados Overflow y Mode Fault SPSCR READ: SPRF 0 OVRF MODF SPTE 0 SPR1 SPR0 WRITE: RESET: 0 0 0 0 1 0 0 0 SPI Status and Control Register (SPSCR) Overflow flag (OVRF) Se activa cuando el Receive data register no es leido antes de sobrescribirlo El byte de datos entrante se pierde El contenido del Data register no es afectado Limpiado por la lectura del data register Mode Fault flag (MODF) Modo Master solamente Indica que otro master trata de acceder a ese dispositívo Seteado cuando otro dispositívo pone el pin SS a Low Limpiado por una escritura al SPSCR

Sumario de Registros SPCR READ: WRITE: SPRIE DMAS SPMSTR CPOL CPHA SPWOM SPE SPTIE SPSCR READ: SPRF 0 OVRF MODF SPTE 0 WRITE: SPR1 SPR0 SPDR READ: WRITE: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

********************************************************************** * EduDevices.com.ar * * CURSO EN LA WEB SOBRE MICROCONTROLADORES HC908 FLASH DE FREESCALE * * BUENOS AIRES, REPUBLICA ARGENTINA * * * * Título: SPI.ASM * * ------ * * TRANSMISION DE DATOS SINCRONICA USANDO EL MODULO SPI" * * * * Fecha de creación: DICIEMBRE, 2001 * * * * Autor: D.F.A.E for Freescale Products * * Manager & Technical Consult * * Descripción: * * ------------ * * El código aquí descripto intenta explicar el funcionamiento del * * Módulo de SPI para transmitir serialmente caracteres en código * * ASCII. El prorama configura el SPI como un MASTER, manejado por * * interrupciones. El periférico "Slave es seleccionado por medio * * de la línea PTB3 a un nivel BAJO. Entre cada transferencia de * * 8 bits, la línea PTB3 se mantiene en nivel ALTO. * * También el clock se mantiene BAJO y toma datos en el flanco de * * Subida de este. El clock serial (SPCLK) se há seteado para no * * Exceder 1 Mhz de baud rate.fbus = 8MHZ (XTAL = 32MHZ) * * El MCU utilizado en este ejemplo es un MC68HC908GP32, se puede * * aplicar a cualquier otro MCU de la flia. HC908 con Módulo SPI * * ********************************************************************

INCLUDE 'EQUATES.ASM' ;Equates para todos los registros del HC908GP32 * --------------------------------- * TABLE : DATOS A SER TRANSMITIDOS * --------------------------------- ORG $40 ;Los DATOS comienzan en $40 (comienzo de la RAM) DATA FCB Como usar el módulo de SPI en los HC908 FLASH" FCB En forma sencilla y sin sufrir por ello." DB 0 * --------------------------------------------------------------------- * MAIN PROGRAM (PROGRAMA PRINCIPAL) * -------------------------------------- ORG $8000 ;Comienzo de la memoria de programa en FLASH MAIN: BSR INIT ; Subrutina para inicializar los registros del SPI BSR TRANSMIT ; Subrutina para comenzar con la transmisión DONE WAIT ; Espero (Wait) hasta la interrupción INCX ; Incremento el puntero X al próximo byte BRA DONE ; Siempre salto a DONE FINISH BRA FINISH ; Finalizó la transmisión de todos los DATOS

* -------------------------------------------------------------------- * SUB-RUTINA INIT: * --------------------------- INIT: BSET 3,PTB ; Setea el chip-select pin(ptb3) al estado high BSET 3,DDRB ; Setea el chip-select pin(ptb3) como una output LDA #$0C ; Configuro PORT D como input/ouput según.. STA DDRD ; MOSI, SPSCK = output, MISO, SS* = Input LDA #$01 ; Selección del serial clock baud rate = 1 MHz STA SPSCR ; lo almaceno en el SPSCR register LDA #$A0 ; Configuro el SPI(SPCR): habilito interrupciones SPI, STA SPCR ; DMA NO habilitado, SPMSTR=1, CPOL=0, CPHA=0, SPE=0 LDX #DATA ; Uso el registro X como un puntero al primer caracter LDA SPSCR ; 1er paso p/ limpiar SPRF Flag, Read SPSCR LDA SPDR ; 2do paso p/ limpiar SPRF Flag, Read SPDR BSET 1,SPCR ; Habilito el módulo de SPI (SPE=1) CLI ; Limpio el I flag, habilito las interrupciones del CPU RTS

* ------------------------------------------------------- * TRANSMIT SUBROUTINE (SUB-RUTINA DE TRANSMISION) * ------------------------------------------------------- TRANSMIT: LDA 0,X ; Cargo el Acumulador con el "NUEVO carácter a enviar CBEQA #$0,FINISH ; Detecto si el último carácter(0) está siendo transmitido BCLR 3,PTB ; Selecciono PTB3 = Low para seleccionar el periférico STA SPDR ; Guardo el Acumulador(dato) a ser transmitido ; RTS * -------------------------------------------- * SPI_TRANSMIT: INTERRUPT SERVICE ROUTINE * -------------------------------------------- TSPI_VEC BSET 3,PTB ; De-selecciono el periférico (PTB3 = high) LDA SPSCR ; 1er paso p/ limpiar SPIF Flag, Read SPSCR LDA SPDR ; 2do paso p/ limpiar SPIF Flag, Read SPDR BSR TRANSMIT ; Llamo a la Subrutina de transmisión p/ transmitir el prox. Carac. RTI ; Return from Interrupt

* --------------------------------------------------------- * SPI VECTORS: Transmit Vector (Vector de Transmisión) * --------------------------------------------------------- ORG $FFE8 ; Inicializo el SPI vector en $FFF8 FDB TSPI_VEC * ----------------------------- * Inicializo el "RESET" Vector * ----------------------------- ORG $FFFE ; Inicialización del RESET vector en $FFFE FDB MAIN END ; Fín del programa!!! (no es necesaria esta línea, es solo a ; los efectos didacticos) FIN CAPITULO 11!!!