IC OKI M6260A Engine Control Counter
Referência técnica para o IC OKI M6260A Engine Control Counter, um coprocessador de temporização (timing) e E/S (I/O) personalizado usado nas ECUs OBD0 e OBD1 da Honda.
Adaptado de pgmfi.org wiki
O OKI M6260A (frequentemente marcado como M6260A ou 6260A) é um circuito integrado personalizado fabricado pela OKI Semiconductor especificamente para as Unidades de Controlo do Motor (ECUs) da Honda. Designado oficialmente como Engine Control Counter IC, este chip foi descontinuado em meados dos anos 90, mas continua a ser um pilar das arquiteturas de ECU OBD0 e OBD1.
Como a documentação oficial do fabricante nunca foi lançada publicamente, os detalhes aqui apresentados são o resultado de um extenso trabalho de engenharia reversa de hardware por parte da comunidade de tuning Honda (notadamente J. Wong, Javier, Mark Lamond e lestard).
Papel e Funções Principais
O OKI M6260A atua como um coprocessador de E/S (I/O) multiuso e gestor de temporização (timing). Ele alivia o MCU principal (como o OKI 66207) de operações em tempo real e de alta frequência. As suas principais funções incluem:
- Rastreamento de Posição e Velocidade do Motor: Monitorizar os sinais brutos do distribuidor (TDC, CYP, CKP) para calcular as RPM e acionar interrupções de temporização.
- Processamento da Velocidade do Veículo: Ler os pulsos do sensor de velocidade (VSS) para calcular a velocidade do veículo.
- Saída de Temporização dos Injetores (Pre-drivers): Controlar os sinais de porta/base para os transístores de alta potência dos injetores de combustível (
Q18–Q21). - Saída de Temporização de Ignição: Direcionar o pulso de disparo do módulo de ignição (igniter) para controlar o avanço/sincronização da faísca.
- Controlo de Saídas Auxiliares: Controlar relés e solenoides auxiliares (embraiagem do A/C, relé principal, purga do EVAP, válvula de ralenti acelerado, Check Engine Light, etc.).
- Monitorização do Feedback de Hardware: Verificar os estados das saídas através da leitura de entradas de diagnóstico em loop-back.
Interface de Software e Registos de Memória
O MCU principal comunica com o M6260A através do seu barramento de dados externo, utilizando instruções de E/S mapeadas em memória (MOVX em linguagem assembly estilo 8051). O M6260A ocupa o espaço de endereçamento de 0x2000h a 0x200Fh.
Operações de Escrita em 0x2000h (Saídas de Porta)
Escrever um byte no endereço 0x2000h comuta diretamente as linhas de saída digital no M6260A.
- Estado Lógico: Controlo ativo em baixo (Active-Low). Se o bit mais significativo (Bit 7) for 0, a saída correspondente é ligada (ON / ativada). Se o Bit 7 for 1, a saída é desligada (OFF / desativada).
- Endereço da Porta: Os 7 bits inferiores servem como endereço ou identificador de pino.
| Valor da Porta (ON) | Valor da Porta (OFF) | Pino de Saída | Circuito / Componente Controlado |
|---|---|---|---|
0x10 |
0x90 |
Pin 24? | Função Desconhecida |
0x11 |
0x91 |
Pin ? | Função Desconhecida |
0x12 |
0x92 |
Pin 24 | Função Desconhecida |
0x13 |
0x93 |
Pin 22 | Saída de Disparo do Módulo de Ignição (IC14) |
0x14 |
0x94 |
Pin 32 / 34 | Controlador do Relé Principal (Main Relay) |
0x15 |
0x95 |
Pin 33 | Controlador do Relé da Embraiagem do A/C |
0x16 |
0x96 |
Pin 45 | Q35 - LED de Erro na placa da ECU |
0x17 |
0x97 |
Pin 44 | Controlador do Transístor Q33 |
0x20 |
0xA0 |
Pin 43 | Válvula / Solenoide de Ralenti Acelerado (Fast Idle) |
0x21 |
0xA1 |
Pin 42 | Transístores Q31, Q45, Pino 11 do CN1 |
0x22 |
0xA2 |
Pin 41 | Luz de Aviso de Motor do Painel (CEL/MIL) |
0x23 |
0xA3 |
Pin 40 | IC17 - Bloqueio (Lockup) da Transmissão Automática |
0x24 |
0xA4 |
Pin 39 | Saída auxiliar multiuso |
0x25 |
0xA5 |
Pin 15 | Controlo Lógico da Entrada do Sensor TDC |
0x27 |
0xA7 |
Pin ? | Função Desconhecida |
Operações de Leitura (Entradas Digitais)
A leitura dos endereços 0x2001h e 0x2002h devolve o estado lógico em tempo real das entradas digitais ligadas ao M6260A.
| Endereço de Memória | Bit | Pino | Sinal de Entrada Ligado |
|---|---|---|---|
0x2001h |
Bit 1 | Pin 60 | Estado do Interruptor do A/C |
0x2001h |
Bit 3 | Pin 59 | Sinal de Arranque/Funcionamento do Interruptor de Ignição |
0x2001h |
Bit 4 | Pin 58 | Interruptor do Ventilador de Sofagem/Aquecedor |
0x2001h |
Bit 5 | Pin 57 | Interruptor de Marcha-Atrás (modelos de Transmissão Manual) |
0x2001h |
Bit 6 | Pin 56 | Interruptor de Interbloqueio de Embraiagem / Caixa de Fusíveis JDM SiR |
0x2001h |
Bit 7 | Pin 55 | Entrada do Interruptor de Travão |
0x2002h |
Bit 0 | Pin 54 | Entrada Digital Geral |
0x2002h |
Bit 1 | Pin 53 | Entrada Digital Geral |
0x2002h |
Bit 2 | Pin 52 | Entrada Digital Geral |
0x2002h |
Bit 3 | Pin 51 | Entrada Digital Geral |
0x2002h |
Bit 4 | Pin 50 | Entrada Digital Geral |
0x2002h |
Bit 5 | Pin 49 | Entrada Digital Geral |
0x2002h |
Bit 6 | Pin 48 | Entrada Digital Geral |
0x2002h |
Bit 7 | Pin 47 | Entrada Digital Geral |
Registos de Contadores e Acumuladores de Pulso
A leitura dos registos 0x2004 a 0x2007 recupera contadores de hardware preenchidos diretamente pelas entradas de leitura de pulso do distribuidor e VSS do M6260A.
| Endereço do Registo | Largura de Bits | Conteúdo dos Dados | Pino de Entrada | Sensor de Origem |
|---|---|---|---|---|
0x2004h |
8-bit | Byte Baixo de Rotação do Motor (RPM) | Pin 64 | Entrada do Sensor de Rotação/Crank |
0x2005h |
8-bit | Byte Alto de Rotação do Motor (RPM) | Pin 64 | Entrada do Sensor de Rotação/Crank |
0x2006h |
8-bit | Byte Baixo de Velocidade do Veículo (VSS) | Pin 61 | VSS (Sensor de Velocidade do Veículo) |
0x2007h |
8-bit | Byte Alto de Velocidade do Veículo (VSS) | Pin 61 | VSS (Sensor de Velocidade do Veículo) |
Note
A escrita no endereço
0x2000hcom os bits 4 e 5 definidos como 0 configura ou reinicia estes contadores de RPM/VSS e os controladores internos do Modulador por Largura de Pulso (PWM). O endereço0x200Fhcomporta-se como um Registo de Controlo Geral para a configuração interna do M6260A.
Sequência de Inicialização no Arranque do M6260A
Durante o arranque (boot) da ECU, o software executa uma rotina precisa de troca de bytes para inicializar o chip M6260A:
WRITE 0x00 -> [0x2000h] ; Limpar/inicializar saídas
WRITE 0x25 -> [0x2000h] ; Inicializar encaminhamento do sensor TDC
WRITE 0x96 -> [0x2000h] ; Comando LED de Erro DESLIGADO (bit alto ativo)
WRITE 0xA7 -> [0x2000h] ; Desligar porta auxiliar
WRITE 0xE9 -> [0x200Fh] ; Configurar registo de controlo geral
READ [0x2003h] ; Ler registo de estado (espera 0x80)
WRITE 0xA0 -> [0x2000h] ; Comando Solenoide de Ralenti Acelerado DESLIGADO
READ [0x2003h] ; Ler registo de estado (espera 0x80)
WRITE 0x00 -> [0x2001h] ; Inicializar Porta 1
WRITE 0x01 -> [0x2003h] ; Ativar interrupções/controlo de escrita
READ [0x2003h] ; Ler registo de estado (espera 0x81)
WRITE 0x01 -> [0x2002h] ; Inicializar Porta 2
READ [0x2003h] ; Ler registo de estado (espera 0x80)
Mapeamento de Pinos do Invólucro de 64 Pinos
O M6260A está alojado num invólucro plástico QFP de 64 pinos. Abaixo encontra-se a configuração completa dos pinos mostrando as ligações ao MCU e aos componentes internos da ECU:
| Pino | Ligação / Função | Pino | Ligação / Função |
|---|---|---|---|
| 1 | GND | 64 | Entrada do Sensor de RPM |
| 2 | Barramento de Dados do MCU Bit 0 (P0.0) | 63 | Pino 33 do Chip BACK |
| 3 | Barramento de Dados do MCU Bit 1 (P0.1) | 62 | Entrada do Sensor CID (Cylinder ID) |
| 4 | Barramento de Dados do MCU Bit 2 (P0.2) | 61 | Entrada do Sensor VSS (Vehicle Speed Sensor) |
| 5 | Barramento de Dados do MCU Bit 3 (P0.3) | 60 | Entrada do Interruptor do A/C |
| 6 | Barramento de Dados do MCU Bit 4 (P0.4) | 59 | Pino 7 do Amplificador Operacional IC 2904 |
| 7 | Barramento de Dados do MCU Bit 5 (P0.5) | 58 | Pino 6 da Rede de Resistências RM4 |
| 8 | Barramento de Dados do MCU Bit 6 (P0.6) | 57 | Pino 4 da Rede de Resistências RM4 |
| 9 | Barramento de Dados do MCU Bit 7 (P0.7) | 56 | Pino 3 da Rede de Resistências RM4 |
| 10 | Habilitação de Chip (Chip Enable) do MCU (/CE) / P2.4 |
55 | Pino 2 da Rede de Resistências RM7 |
| 11 | Bit de Endereço do MCU 8 / P2.5 | 54 | Transístor Q18 (Pre-driver do Injetor 1) |
| 12 | Habilitação de Trinco de Endereço (ALE) do MCU | 53 | Transístor Q19 (Pre-driver do Injetor 2) |
| 13 | Habilitação de Escrita (Write Enable) do MCU (/WR) |
52 | Transístor Q20 (Pre-driver do Injetor 3) |
| 14 | Habilitação de Leitura (Read Enable) do MCU (/RD) |
51 | Transístor Q21 (Pre-driver do Injetor 4) |
| 15 | Entrada do Sensor TDC (Top Dead Center) | 50 | Pino 7 do RM7 e Pino 2 do Q16 (Feedback na T/A) |
| 16 | Pino 7 do Driver IC14 |
49 | Pino 8 do RM7 e Pino 2 do Q17 (Feedback no Solenoide de Purga) |
| 17 | Resistência R85 do IC Personalizado BA226A |
48 | Resistência BR6 (Pull High/Low) |
| 18 | Condensador C61 |
47 | Resistência BR5 (Pull High/Low) |
| 19 | Pino 14 do Chip BACK | 46 | VCC Lógico (+5V) |
| 20 | Pino 3 do ADC (uPD7004C) | 45 | Transístor Q35 (LED de Erro na placa) |
| 21 | Resistência R48 |
44 | Pino 3 do Transístor Q33 |
| 22 | Saída de Disparo do Módulo de Ignição | 43 | Saída do Solenoide de Ralenti Acelerado |
| 23 | Saída Multiuso | 42 | Transístores Q31, Q45 (Pino 11 do CN1) |
| 24 | Pino 3 do HC04 / Pino 10 do HC123 para R42 (Pull) |
41 | Saída da Luz de Aviso de Motor do Painel (CEL) |
| 25 | VCC (+5V) | 40 | Driver IC17 (Bloqueio da Transmissão Automática) |
| 26 | VCC (+5V) | 39 | Saída Multiuso |
| 27 | GND | 38 | Transístor Q24 (Entrada de Feedback do Injetor 1) |
| 28 | Díodo/Filtro FB2 | 37 | Transístor Q25 (Entrada de Feedback do Injetor 2) |
| 29 | Díodo/Filtro FB1 | 36 | Transístor Q26 (Entrada de Feedback do Injetor 3) |
| 30 | Resistência R47 para o Pino 31 |
35 | Transístor Q27 (Entrada de Feedback do Injetor 4) |
| 31 | Resistência R47 para o Pino 30, C59, C60 |
34 | Controlador do Relé Principal |
| 32 | GND | 33 | Relé da Embraiagem do A/C |
Créditos e fonte
Fonte Adaptado de Oki6260A em pgmfi.org wiki. Licenciado sob CC BY-NC-SA 1.0.