Novato 16 anos aqui.
Meu projeto é um mini robô com o pcb como chassi, bateria lipo com circuito de carregador e sensores infravermelhos. Usei LSM6DS33TR para o meu acelerômetro I2C e giroscópio com "resistor de pull-up" 10K de acordo com a folha de dados e ATMEGA328P como microcontrolador.
É a minha primeira vez para projetar e fabricar minha própria placa de circuito impresso industrial. Eu fabriquei os PCBs com JLCPCB. Depois de enviar os arquivos e aguardar a entrega, quando vejo um erro no meu design. Percebi que não liguei os resistores de pull-up para o meu barramento I2C corretamente, pois eles deveriam ser puxados para 3V3.
Minhas perguntas são:
- Como redirecionar as conexões ou fazer modificações para fazer com que o SDA e o SCL puxem para fornecer tensão com a PCB já sendo fabricada?
- Devo alterar o design e fabricar outra PCB? (Quebrou ):)
Aqui está todo o diagrama esquemático do projeto que eu fiz: (as linhas i2c estão envolvidas)
fonte
Respostas:
Você precisa 'consertar' seu PCB.
Eu faria o que tentei desenhar abaixo: coloque dois resistores pull-up (10K) nas almofadas existentes, causando um curto-circuito. Em seguida, um fio da outra extremidade termina na conexão 3V3 mais próxima.
Eu desenhei um resistor SMD, mas você também pode usar os axiais "antiquados".
fonte
Sua placa tem mais problemas. Por exemplo, os pinos da fonte de alimentação do U5 têm um capacitor em série com eles, que eu acho que deveriam ser as tampas de desacoplamento entre o VCC e o GND. Também não vejo tampas de desacoplamento para o AVR.
No final, pode ser melhor refazer a placa corretamente.
fonte
O barramento I2C pode ser corrigido sem alterações de PCB (os outros problemas encontrados por @Unimportant ainda exigirão atenção).
Simplesmente:
Observe que os pullups programáveis não serão exatamente os valores recomendados para o uso do I2C; portanto, você deve recalcular a velocidade máxima com base na nova força de pullup.
fonte