iic 버스에 대해서. 나는 많은 정보를 읽었으며 많은 정보가 모순됩니다. 호스트가 데이터를 읽기 전에 sda=1을 높여야 합니까? 질문이 매우 깁니다. 보충 자료를 참조하십시오.
내가 이해한 바는 데이터를 읽을 때 슬레이브가 버스를 제어하므로 sda를 미리 릴리스(즉, 하이로 풀링)해야 한다는 것입니다. 그렇지 않으면 슬레이브가 버스를 변경할 수 없습니다. sda가 1이면 호스트는 scl=1을 제어하고 슬레이브는 전송하려는 데이터에 따라 sda를 1 또는 0으로 설정하도록 선택합니다(즉, scl=1이면 슬레이브는 sda를 변경합니다).
데이터를 보낼 때 호스트는 버스를 제어합니다. scl=0이면 sda는 호스트에 의해 변경되고, scl=1이면 sda는 변경되지 않고 슬레이브에 의해 읽혀집니다. (scl=0일 때 호스트는 sda를 변경합니다.)
응답할 때는 데이터 1비트를 읽는 것과 같습니다. 마찬가지로 scl=1일 경우 슬레이브는 sda를 변경합니다.
처음과 끝은 호스트가 sda를 제어합니다. scl이 1이면 sda에 대한 모든 변경 사항은 시작 및 중지 신호로 간주됩니다.
개인적인 이해이니, 틀린 부분이 있으면 알려주세요!
ps 물론, 읽을 때 슬레이브가 scl=0인 상태에서 sda를 변경하는 것으로도 이해할 수 있지만, 로직에는 영향을 미치지 않습니다. 어떻게 쉽게 이해할 수 있을까요?