Cars · Ecu

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.

Avançado

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:

  1. 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.
  2. Processamento da Velocidade do Veículo: Ler os pulsos do sensor de velocidade (VSS) para calcular a velocidade do veículo.
  3. 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 (Q18Q21).
  4. 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.
  5. 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.).
  6. 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 0x2000h com 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ço 0x200Fh comporta-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.