• 카테고리

    질문 & 답변
  • 세부 분야

    임베디드 · IoT

  • 해결 여부

    미해결

EEPROM 디바이즈 장치 주소 변수 수식 질문입니다.

22.08.14 22:21 작성 조회수 181

0

안녕하세요.
EEPROM 장치주소 변수 계산식에서 우측으로 8비트 시프트 후 다시 좌측으로 1비트 시프트하는 이유가 궁금합니다.
 

답변 1

답변을 작성해보세요.

1

안녕하세요!

이 그림을 보시면, Device Address의 맨 하위 비트(bit0)는 I2C의 읽기/쓰기를 표현하는 비트이고, 페이지 주소의 상위 두 비트는 bit1과 bit2에 쓰여져야 합니다.

만약 우측으로 8비트 시프트 후에 좌로 1비트 시프트를 하지 않는다면 그 값이 위의 P1과 P0에 쓰여지는게 아니라 P0와 R/W 에 쓰여지겠죠.

(만약 devAddress = (page*16)>>8 | 0xA0; 이렇게 작성한다면요)

그럼 엉뚱한 주소에 접근하게 되므로 좌로 1비트를 시프트 하는 겁니다.

 

참고로 강의에서는

devAddress = ((page*16)>>8)<<1 | 0xA0;

이렇게 작성했는데, HAL드라이버를 쓴다면

devAddress = (page*16)>>7 | 0xA0;

이렇게 그냥 우로 7비트만 시프트 하는 방식으로 해도 문제는 없을 것 같네요!

 

혹시 이해가 안되시면 답글 부탁드립니다~

fromSKY님의 프로필

fromSKY

질문자

2022.08.16

저의 질문을 찰떡 같이 알아들으시고 답변 주셨네요. 처음부터 7비트 시프트 하면 되는 거 아닌가 라는 생각이 들었거든요.  답변 감사합니다.

안녕하세요! 답변이 도움이 되었다니 다행입니다.

그럼 앞으로도 안전하고 즐거운 드론 개발 되시기 바랍니다!