Material sobre porta serial e porta paralela
Transcrição
Material sobre porta serial e porta paralela
Comunicação Paralela Meio de transferência de dados onde a informação é transferida os 8 bits ao mesmo tempo. Porta Paralela do PC Foi concebida originalmente para transferir dados para uma impressora, sendo portanto uma porta unidirecional, ou seja, os dados somente poderiam trafegar no sentido computador => impressora. Porém com a evolução da tecnologia de dispositivos periféricos, houve a necessidade de colocar dispositivos para leitura conectado à porta paralela, como o scanner, o zip drive, etc... Assim a porta paralela passou a ser uma porta bidirecional. Mas a porta paralela continua a ser conhecida como LPT - Line PrinTer. Padrões de Porta Paralela no PC : - SPP (Standard Parallel Port): Porta paralela no IBM PC original, ou qualquer porta que emule a porta original, também é chamada SPP, porta paralela padrão, tipo AT ou ISA-compatível. A porta paralela no PC original era baseada na interface para impressora Centronics existente. Pode transferir dados de oito bits para um periférico, usando um protocolo semelhante ao usado pela interface Centronics original, que permite apenas transferência unidirecional (PCpara-periféricos), não permitindo entrada de dados. Porém existe um modo que possibilita a leitura de 4 bits de cada vez. Este modo é lento, mas ficou popular como um modo de usar a porta paralela para entrada Possui 3 endereços de registradores para acesso da CPU (ex: 378H, 379H e 37AH). - Tipo PS/2 (Porta Paralela do IBM PS/2): A melhoria inicial desta porta paralela utilizada no modelo PS/2 da IBM, foi a porta de dados bidirecionais. Esta porta bidirecional habilita a transferência de oito bits entre um PC e um periférico. O termo “Tipo PS/2” se refere a qualquer porta paralela bidirecional que não suporte os modos EPP ou ECP. - EPP (Enhanced Parallel Port): Porta desenvolvida originalmente pela Intel (fabricante de chips), Zenith (fabricante de PCs), e Xircom (fabricante de produtos para portas paralelas de redes) que possui as linhas de dados bidirecionais, como na porta Tipo PS/2, porém uma EPP pode ler ou escrever um byte em um ciclo do barramento ISA (aproximadamente 1µs, incluindo handshake). A porta SPP e a porta Tipo PS/2 necessitam de quatro ciclos para realizar acesso. Uma EPP pode inverter a direção do fluxo de dados rapidamente, sendo muito eficiente quando usada com drives de disco ou fita ou outros dispositivos que transferem dados em ambas as direções. Uma EPP também pode emular portas SPPs, e algumas EPPs podem emular portas Tipo PS/2. Possui 8 endereços de registradores para acesso da CPU (ex: de 378H a 37FH). - ECP (Extended Capabilities Port): Porta inicialmente proposta pela HP (Hewlett Packard) e pela Microsoft que possui as linhas de dados bidirecionais e pode transferir dados na velocidade do barramento ISA, como na porta EPP. Mas a ECP têm buffers que permitem transferências por DMA (acesso direto à memória) e compressão de dados. Transferências de ECP são úteis para impressoras, scanners, e outros periféricos que transferem grandes blocos de dados. Uma ECP também pode emular portas SPP ou Tipo PS/2, e muitas ECPs podem emular EPP. Possui 6 endereços de registradores para acesso da CPU. Endereços usuais para a Porta Paralela da PC 378 a 37F 278 a 27F 3BC a 3BF Configuração no BIOS 0040:0008 - Endereço de LPT1 0040:000A - Endereço de LPT2 0040:000C - Endereço de LPT3 2 Existem 3 meios de acesso à porta paralela do PC (SPP): - Através do DOS: Utilizando a função 5 da INT 21H - Através da BIOS: Utilizando a INT 17H função 0 - Saída para a impressora; função 1 - Inicializa porta de impressão; função 2 - Status da impressora - Diretamente no hardware: através de instruções IN e OUT nos endereços relativos às portas. 1° End - data byte 2° End - Status /BUSY ACK PE 3° End - Controle SLCT ERROR X X X IRQ enable /SLCT IN /INIT /AUTO FEED /STROB E Conectores DB25 fêmea - utilizado para conexão ao computador Sinal Direção Centronics - utilizado para conexão à impressora Pino Pino Descrição DB-257 Centronics-36 STROBE Saída 1 1 Indica que os dados estão prontos para serem transmitidos; D0 a D7 Saída 2a9 2a9 Dados para a impressora; ACK Entrada 10 10 Indica que a impressora está preparada para receber dados; BUSY Entrada 11 11 Indica que a impressora não está preparada para receber dados porque seu buffer interno está cheio; PE Entrada 12 12 Indica que a impressora está sem papel; SLCT Entrada 13 13 Indica que a impressora está em estado “on line”, pronta para receber dados; AUTO Saída 14 14 Avanço de linha; FEED ERROR Entrada 15 32 Indica erro (fim de papel, impressora desativada, etc...); INIT Saída 16 31 Reinicializa a impressora e limpa o buffer de impressão; SLCT IN Saída 17 36 Somente transfere dados para a impressora quando estiver ativo, selecionando estado “on line” ou “off line”; GND Saída 18 a 25 19 a 30 Terra 3 Comunicação Serial Porta utilizada originalmente para comunicação de dados (Portas COM), e apesar de sua função continuar praticamente a mesma, foi adicionada outras funções como a utilização do mouse. A comunicação serial do PC é uma comunicação half duplex, porque usa o mesmo meio físico tanto para transmissão, como para recepção, só podendo trafegar uma informação de cada vez. A comunicação serial pode ser feita de dois modos: Modo Assíncrono Pode ser considerado o modo mais simples de se fazer uma transmissão de dados. Cada vez que for acessado o meio físico, são transmitidos de 8bits a 12bits de cada vez. O PC usa este modo. repouso start bit b0 b1 b2 b3 b4 b5 b6 b7 paridade stop bit repouso Pode ser definido por software: - a quantidade de bits para a transmissão: de 5bits a 8bits; - a existência e o tipo de paridade: par ou ímpar; - a quantidade de stop bits. Modo Síncrono É um método de comunicação mais rápido e eficiente que o modo assíncrono, mas exige maior qualidade do hardware, pois necessita que o clock de recepção seja exatamente igual ao clock de transmissão, ou seja, o mesmo sincronismo. Cada vez que for acessado o meio físico, são transmitidos vários bytes (300bytes, 500bytes, etc...). Este modo necessita de uma linha física e circuitos de acesso ao transmissor e receptor especiais. repouso caracteres de sincronismo dados fim de repouso bloco Os caracteres de sincronismo devem ser idênticos, e servem para sinalizar o inicio da transmissão. Porta Serial do PC No PC a porta serial foi implementada com uma UART (Universal Assincronous Receiver Transmitter), originalmente o 8250, e atualmente substituto pelo 16550, que tem como principal vantagem a existência de uma fila interna de 16 bytes. Endereços usuais: 3F8 a 3FF 2F8 a 2FF 3E8 a 3EF 2E8 a 2EF Configuração no BIOS: 0040:0000 - Endereço da COM1 0040:0002 - Endereço da COM2 0040:0004 - Endereço da COM3 0040:0008 - Endereço da COM4 Processo de comunicação serial: Sinais utilizados: Tx - Linha pela qual os dados saem do computador (DTE); Rx - Linha pela qual os dados entram no computador (DTE); DTR - Data Terminal Ready - Sinal de saída do DTE que indica “DTE on line”; DSR - Data Set Ready - Sinal de entrada do DTE que indica “DCE on line”; RTS - Request To Send - Requisição para enviar dados do DTE ao DCE; CTS - Clear to Send - Autorização para o DTE enviar dados para o DCE; DCD ou CD - Data Carrier Detect - Indica que um sinal de portadora foi detectado na linha telefônica; RI - Ring Indicator - Indica sinal de chamada. 4 Inicialmente é necessário que ocorra o hanshake DTR-DSR, para indicar que tanto computador como modem estão operacionais. E também que a conexão telefônica esteja estabelecida. Quando o DTE1 deseja enviar um caracter ao DTE2, ativa o sinal RTS. O DCE então coloca portadora na linha e ativa CTS. Ao receber CTS a porta serial do DTE envia o dado serial pelo pino Tx. No modem, os bits seriais são modulados e transmitidos via linha telefônica. Quando o DCE2 detecta a presença de portadora na linha telefônica, avisa ao DTE2 através do DCD. Quando os dados chegarem, o DCE2 demodula os bits seriais e os conduz ao DTE pelo pino Rx. Obs: Não ocorre nenhuma indicação ao DTE1 que o DTE2 recebeu o dado corretamente, e o único meio de saber disso é se o DTE2 transmitir ao DTE1 um sinal de resposta. Acesso à porta serial do PC: - Através da BIOS: Utilizando a INT 14H função 0 - Inicializa a porta serial; AH = 00h AL = parâmetros DX = porta serial retorna: AH = status da porta AL = status do modem função 2 - leitura da porta serial; AH = 02h DX = porta serial retorna: AH = status da porta AL = caracter recebido parâmetros BAUD BAUD Rate Rate 0 0 0 = 110 0 0 1 = 150 0 1 0 = 300 0 1 1 = 600 1 0 0 = 1200 1 0 1 = 2400 1 1 0 = 4800 1 1 1 = 9600 BAUD Rate função 1 - escreve na porta serial; AH = 01h AL = caracter DX = porta serial retorna: AH = status da porta função 3 - Status da porta serial; AH = 03h DX = porta serial retorna: AH = status da porta AL = status do modem Even Parity Parity Select Enable 0 0 = nenhuma 0 1 = ímpar 1 0 = nenhuma 1 1 = par Stop Bits 0 = 1 bit 1 = 2 bits tamanho do tamanho do caracter caracter 0 0 = 5 bits 0 1 = 6 bits 1 0 = 7 bits 1 1 = 8 bits status da porta = registrador de Status de Linha (LSR - Line Status Register) status do modem = registrador de Status do MODEM (MSR - Modem Status Register) - Diretamente no hardware: através de instruções IN e OUT nos endereços relativos à porta: 16550 5 Estrutura interna: 6 Tabela de registradores do 16550: DLAB 0 A2 0 A1 0 A0 0 1 1 0 X X X X X X 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 RBR THR DLL DLH IER IIR FCR LCR MCR LSR MSR Registrador Receiver Buffer (read), Transmitter Holding Register (write) Divisor Latch Low (least significant byte) Divisor Latch High (most significant byte) Interrupt Enable Register Interrupt Identification Register (read), FIFO Control Register (write) Line Control Register MODEM Control Register Line Status Register MODEM Status Register End base + 0: Acesso ao registrador do Buffer de Recepção (para leitura); ou ao registrador de espera da Transmissão (para escrita); End base + 3: Acesso ao registrador de controle de linha (escrita ou leitura no Line Control Register); Divisor Latch Break Stick Even Parity Stop tamanho tamanho Access Bit Control Bit Parity Parity Enable Bits do caracter do caracter bit 0 e bit 1: Definem o tamanho do caracter: (00 = 5 bits, 01 = 6 bits, 10 = 7 bits e 11 = 8 bits); bit 2: Define a quantidade de stop bits (0 = 1 Stop Bit e 1 = 2 Stop Bits); bit 3: Define a existência do bit de paridade na comunicação (1 = com paridade); bit 4: Define paridade par (1 = paridade par); bit 5: Mantém o bit de paridade com um valor fixo (0 quando bit 4 for 0 e 1 quando bit 4 for 1); bit 6: Break Control Bit - com 1 coloca a saída serial em nível baixo (transmissão bloqueada); bit 7: DLAB - Bit que permite acesso ao Registrador do Latch do Divisor do Gerador de Baud Rate. End base + 5: Acesso ao registrador de Status de Linha (leitura do Line Status Register); Error TEMP THRE Break Framing Parity Overrun RDR Indicator Interrupt Error Error Error bit 0: Receiver Data Ready - Indica a existência de um dado na entrada serial (no RBR ou na FIFO); bit 1: Indica erro por Sobreposição. Este erro ocorre quando um novo caracter chega ao RBR (ou à FIFO) sem que o caracter anterior tenha sido lido pela CPU, ocasionando perda do dado. bit 2: Indica erro de Paridade. Este erro ocorre quando a paridade do dado recebido é diferente da paridade definida no LCR; bit 3: Indica erro de falta de Stop bit; bit 4: Indica a ocorrência de break na entrada serial (recepção bloqueada pelo transmissor); bit 5: Transmitter Holding Register Empty - Indica registrador de espera vazio; bit 6: Transmitter Empty - Indica saída serial vazia; bit 7: Indica a ocorrência de algum tipo de erro na recepção. End base + 4: Acesso ao registrador de controle de MODEM; 0 0 0 Loop Out2 Out1 RTS DTR bit 0: Data Terminal Ready - Ativa o sinal DTR; bit 1: Request to Send - Ativa sinal RTS, que significa que a porta serial deseja transmitir um byte; bit 2: Ativa saída Out1; bit 3: Ativa saída Out2; bit 4: Habilita modo para diagnóstico LOCAL. O pino SOUT fica em 1, o pino SIN fica desconectado, a saída do Registrador de deslocamento do transmissor fica conectado internamente à entrada do Registrador de deslocamento do receptor, os quatro sinais de status do Modem (DSR, CTS, RI e DCD) ficam desconectados externamente (e com nível 1) e ligados internamente aos quatro sinais controle de Modem (DTR, RTS, OUT1 e OUT2). Neste modo o dado transmitido é recebido imediatamente. 7 End base + 6: Acesso ao registrador de Status do MODEM (leitura); DCD RI DSR CTS DDCD TERI DDSR DCTS bit 0: Delta Clear to Send - Indica variação no sinal CTS; bit 1: Delta Data Set Ready - Indica variação no sinal DSR; bit 2: Trailing Edge Ring Indicator - Indica borda no sinal RI; bit 3: Delta Data Carrier Detect - Indica variação no sinal DCD; Obs: Sempre que o bit0, bit1, bit2 ou bit3 for 1 é gerada uma interrupção de Status do Modem; bit 4: Clear to Send - Indica estado do CTS; bit 5: Data Set Ready - Indica estado do DSR; bit 6: Ring Indicator - Indica estado do RI; bit 7: Data Carrier Detect - Indica estado do DCD. End base + 1: Acesso ao registrador de habilitação de Interrupção; 0 0 0 0 EDSSI ELSI ETHEI ERDAI bit 0: ERDAI - Enable Received Data Available Interrupt - Habilita que ocorra interrupção quando o RBR receber um dado serial. Interrupção de segundo nível de prioridade. bit 1: ETHEI - Enable Transmitter Holding Register Empty Interrupt - Habilita que ocorra interrupção quando o THR ficar vazio. Interrupção de terceiro nível de prioridade. bit 2: ELSI - Enable Receiver Line Status Interrupt - Habilita que ocorra interrupção quando o registrador de controle de linha sinalizar algum tipo de erro (Paridade, Overrun, Framing ou break). Interrupção de primeiro nível de prioridade. bit 3: EDSSI - Enable MODEM Status Interrupt - Habilita que ocorra interrupção quando ocorrer variação de DCD, RI, DSR ou CTS. End base + 2: Acesso para leitura, do registrador de Identificação de Interrupção (IIR) FIFOs FIFOs 0 0 Interrupt Interrupt Interrupt ``0'' if Interrupt Enabled Enabled ID Bit(2) ID Bit(1) ID Bit (0) Pending bit 0: Quando seu valor for 0 indica que existe interrupção pendente. A origem da interrupção é dada pelos bits 1, 2 e 3. bit 1 e bit 2: Indica a prioridade da interrupção bit2 bit1 Nível de Tipo e Origem Cancelamento prioridade 11 Mais alto Receiver Line Status - ocorrência de erro (Paridade, leitura do LSR; Overrun, Framing ou break). 10 Segundo Dado Recebido disponível ou nível de gatilho da leitura do RBR ou FIFO alcançado. da FIFO; 01 Terceiro Registrador de Espera do Transmissor vazio escrita no THR; 00 Quarto Modem Status - variação de DCD, RI, DSR ou CTS leitura do MSR. bit 3: Indica fim do tempo de espera para leitura da FIFO. É desativado com a leitura da FIFO; bit 6 e bit 7: Ficam em 1 quando em modo FIFO End base + 2: Registrador de Controle da FIFO (para escrita em FCR); RCVR RCVR Reservado Reservado DMA XMIT RCVR FIFO Trigger Trigger Mode FIFO FIFO Enable Reset Reset bit 0: Habilita operação de transmissão e de recepção com a FIFO; bit 1: Reseta todos os bytes da FIFO de recepção; bit 2: Reseta todos os bytes da FIFO de transmissão; bit 3: Define modo de transferência de DMA. No modo 0 um único byte é transferido de cada vez e no modo 1 vários bytes são transferidos de cada vez. bit 6 e bit 7: Definem o nível de gatilho da FIFO: Bit 7 e Bit6 Nível de gatilho 00 1 byte 01 4 bytes 10 8 bytes 11 14 bytes End base + 7: Acesso ao registrador Scratch 8 End base + 0 e DLAB = 1: Acesso ao Latch do Divisor do Baud Generator (8 bits menos significativos); End base + 1 e DLAB = 1: Acesso ao Latch do Divisor do Baud Generator (8 bits mais significativos); Gerador de Baud Rate Tabela de velocidade x valores dos registradores de baud rate Velocidade 50 110 150 300 600 1200 2400 4800 9600 19200 38400 56000 MSB 09H 06H 03H 01H 00H 00H 00H 00H 00H 00H 00H 00H LSB 00H 00H 00H 80H C0H 60H 30H 18H 0CH 06H 03H 02H Procedimento de programação da porta serial: 1° setar DLAB (bit7 do LCR) 2° carregar LSB 3° carregar MSB 4° resetar DLAB, definir tamanho do caracter, número de stop bits e paridade. (LCR) 5° transmitir e/ou receber RS232C Conectores: Existem dois tipos de conectores que podem ser usados na comunicação serial, o DB25 macho e o DB9 macho no computador. O cabo de conexão requer DB9 e DB25 fêmea. Pinagem dos conectores DB9 Tx Rx RTS CTS DTR DSR DCD RI comum DB25 2 3 4 5 20 6 8 22 7 DB9 macho DB25 macho 12 Níveis de Tensão: O padrão RS232C utiliza um padrão de tensões diferentes dos níveis TTL utilizados internamente. TTL RS 232C Hi (alto) 2V a 5V -3V a -15V Lo (baixo) 0V a 0,8V 3V a 15V Cabos de Conexão Conexão micro-modem Conexão micro-micro - null modem (2) Conexão micro-micro - null modem (1) Conexão micro-micro - null modem simples 13 Erros na Transmissão: Com o objetivo de detectar erros, foi adicionado um nono bit ao byte, que traz uma informação sobre a paridade do byte, ou seja, a informação (com 9 bits) deve ter sempre a mesma paridade (que pode ser par ou ímpar). Caso ocorra um valor com a paridade invertida, significa que existe pelo menos um bit invertido na informação, o que, dependendo do caso, pode significar que toda a informação (que pode variar de um byte a um arquivo) está perdida. A geração do bit de paridade, se dá da seguinte forma (considerar paridade ímpar): - caso o byte tenha a paridade par, o nono bit deve valer 1 para tornar a paridade ímpar; - caso o byte tenha a paridade ímpar, o nono bit deve valer 0 para manter a paridade ímpar. A primeira limitação do bit de paridade é que se ocorrer erros em dois bits, a paridade vai ser mantida, e o byte terá erro que não será detectado. A segunda limitação do bit de paridade é a possibilidade de apenas detectar erros, sem corrigi-los. Para tornar possível a correção de erros foram implementadas muitas técnicas, e uma das mais simples é o uso do CRC (Caracter de Redundância Cíclica), que consiste em transmitir a cada oito bytes, um byte com uma informação de paridade, conforme o exemplo abaixo (considerar paridade ímpar): Dado bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 35H 6AH E8H 01H F9H 46H DFH 44H bit de paridade 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 CRC 0 0 1 1 0 1 1 1 1 Ex: Caso ocorra um erro no bit 2 do 3° byte (de 0 passa para 1), o bit de paridade vai informar que existe erro no 3°, e o CRC vai informar que existe erro no bit 2, assim é só inverter o bit 2 do 3° byte que o byte ficará correto. Com este método, podemos corrigir um bit a cada oito byte, que significa ter um erro a cada 81 bits transmitidos (corrige erros, se a taxa de erros não ultrapassar 1,23%). Se houver mais de um erro neste bloco, poderemos apenas detectar que ocorreu erro, sem corrigi-lo. Porém existem métodos mais avançados de correção de erros que permite correção de erros de taxas mais altas. Porém isto implica em enviar cada vez mais informação redundante para ser possível a correção de erros.
Documentos relacionados
ATMEL Corporation
• Bits 1, 0 – SPR1, SPR0: SPI Clock Rate Select 1 and 0: Controlam a taxa SCK do Mestre, não influenciam o escravo. A relação entre o SCK e o oscilador de frequência é mostrado na tabela abaixo:
Leia mais