I2C 레벨 시프 팅


11

현재 센서에서 데이터를 기록하고 기록 된 데이터를 EEPROM에 저장할 수있는 회로를 설계하고 있습니다. 내 두 장치 (EEPROM 및 테스트 목적으로 RTC)는 I2C 버스를 통해 PIC16F887 µC에 연결됩니다. 그러나 두 장치의 전압 작동 범위는 동일하지 않으며 (EEPROM의 경우 5v, RTC의 경우 3.3) 배터리는 9V 배터리입니다.

따라서 SDA / SDL 배선을위한 MOSFET으로 구성된 레벨 시프터가있는 전자 회로를 설계했습니다. 그 외에도 장치에 전원을 공급하기 위해 2 개의 LM317 전압 조정기를 추가했습니다 (9V-> 3.3V 및 9V-> 5V). 나는 그런 것들을 디자인하는 전문가가 아니기 때문에, 내가 만든 것을 한 눈에보고 끔찍한 일을했는지 ​​말해 주면 감사하겠습니다!

여기에 이미지 설명을 입력하십시오


답변:


3

다른 의견에도 불구하고 솔루션 자체는 훌륭합니다. 그래도 몇 가지 사소한 문제가 있습니다.

  1. 버스의 10k 풀업 저항은 특히 더 높은 버스 속도를 사용하려는 경우 충분히 단단하지 않습니다.

  2. 선형 레귤레이터 및 디지털 IC에 입력 및 출력 디커플링 커패시터가 필요합니다. 100nF는 디지털 IC와 선형 레귤레이터, 입력의 경우 100nF, 출력의 경우 1μF에 적합합니다.


디커플링 커패시터 팁 덕분에 실제로 대부분의 선형 레귤레이터 회로도에 표시되어 있지만이 부분을 완전히 건너 뛰었습니다! 디지털 IC의 디커플링 커패시터의 경우 입력 전압과 접지 사이에 하나의 커패시터가 있습니다. 마지막으로, 10k 풀업 저항은 충분히 단단해지지는 않지만 데이터 시트에서는 400kHz 버스 속도로이 값을 권장합니다. 레벨 시프터에 문제가 있습니까? 어쨌든, 그 조언은 훌륭했습니다!
Al_th

1
맞음-디커플링 커패시터를 전원 및 리턴 핀에 최대한 가깝게 유지하십시오. I2C 라인에 커패시턴스가 크면 모서리를 선명하게 유지하기 위해 풀업을 낮추어야합니다. 나는 보통 1.8k로 시작해서 거기서부터 평가합니다.
Adam Lawrence

좋아요, 모든 것에 감사드립니다. 사람들이 다른 I2C 장치를 가지고 놀아주기를 바랍니다!
Al_th

-4

예, 당신은 당신의 회로도에서 끔찍하게 잘못된 일을했습니다. 전압 레벨을 올바르게 레벨 시프트하려면 I2C 슬레이브 주소가 확인되지 않음 (때때로)을 참조하십시오 . MAX3373E IC는 레벨 시프트에 사용됩니다. 풀업 저항은 SDA 및 SCK 라인에 표시되어 있습니다. 그러나 MAX3373E를 사용할 때는 MAX3373E가 I / O 라인의 양쪽에 풀업을 내장하고 있기 때문에 풀업 저항이 필요하지 않다. 레벨 시프 팅에 사용할 수있는 다른 IC도 있습니다. Digi Key 또는 Mouser로 이동하여 검색 할 수 있습니다.


5
OP의 접근 방식은 좋습니다! NXP에는 이 주제에 대한 앱 노트 도 있습니다 . 너무 빨리 판단하지 마십시오.
Adam Lawrence

내가 어디로 잘못 갔는지 봅니다. FET의 심볼이 올바르게 표시되지 않고 다이오드가 누락되었습니다.
Suirnder

1
@Suirnder 제한된 지식으로 너무 강하게 부딪 칠 위험이 있습니다. 당신에 의한 첫 번째 게시물이 아닙니다.
Anindo Ghosh

1
@Gosh 저는 수업을 배우고 있습니다. 먼저 FET의 데이터 시트를 확인해야합니다.
Suirnder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.