호스트에서 IIC 버스의 디바이스 주소를 어떻게 결정합니까?
이다
IIC 의 각 장치는 자신의 주소를 결정하기 위해 주소 레지스터가 필요합니까?
꼭 그렇지는 않습니다. 많은 장치가 하드웨어를 통해 주소를 지정합니다.
일부 주소는 출하 시 설정되므로 사용자가 변경할 수 없습니다.
일부는 몇 비트를 결정하고 나머지는 하드웨어에 의해 결정됩니다 (예: 사용자가 3 비트를 결정하고 제어 주소가 있는 핀 3 개).
주소 레지스터도 있습니다.
호스트가 슬레이브에게 주소를 보내면 해당 주소가 호스트에 속한다는 것을 어떻게 알 수 있습니까? 이 주소는 어떻게 계산됩니까?
엄밀히 말하면, 마스터 디바이스는 슬레이브 장치에 주소를 보내는 것이 아니라 마스터 디바이스가 버스에 주소를 보내는 것입니다. 이 주소는 슬레이브 장치에 속하며 마스터 장치에 속하지 않으므로 "디바이스에서 이 주소가 마스터 장치에 속한다는 것을 어떻게 알 수 있습니까?" 라는 문제가 없습니다. 모든 슬레이브 시스템은 호스트에서 보낸 주소를 받을 수 있으며, 각 슬레이브 시스템은 호스트에서 보낸 주소를 자체 주소와 비교합니다. 일치하는 경우 슬레이브는 호스트에 응답 신호를 보냅니다. 응답 신호를 수신하면 호스트는 버스에 데이터 전송을 시작하고 해당 기계와 통신을 설정합니다. 호스트가 응답 신호를 받지 못하면 주소 지정에 실패한 것입니다.
예를 들어, IIC 버스에 연결된 단일 디스크 두 대가 있는데, 하나는 호스트이고 다른 하나는 슬레이브입니다. 슬레이브 시스템의 이 주소는 어떻게 정의합니까? "라고 말했습니다
IIC 가 있는 단일 칩 마이크로 컴퓨터의 경우 주소 레지스터가 있습니다. 레지스터의 값은 슬레이브 주소로서의 주소입니다.
ATmega48 의 경우 TWI 슬레이브 주소 레지스터인 ———TWAR 이 있습니다. 먼저 작동 모드 (호스트 모드 또는 슬레이브 모드) 를 결정해야 합니다. 슬레이브 모드에서 작업하는 경우 TWI 는 해당 주소에 따라 응답합니다.
IIC 가 없는 단일 디스크인 경우 주소 레지스터가 없습니다. 그래서 일반적으로 노예가 될 필요가 없습니다. 예를 들어 AT89C5 1 을 예로 들면, 일반적인 IO 포트를 사용하여 IIC 타이밍을 시뮬레이션할 때 일반적으로 호스트로 사용됩니다. 특수한 경우 5 1 은 슬레이브일 때 버스를 스캔하고 버스에 주소 신호가 나타나면 응답할 수 있습니다 (엄밀히 말하면, 이 모드는 IIC 기반 Z 사용자 정의 통신 모드일 뿐입니다).
위에서 설명한 바와 같이 가장 일반적인 경우 마스터 및 슬레이브 장치의 역할은 명확합니다. 즉, 슬레이브 장치는 항상 슬레이브 모드에서 작동합니다. 나는 이미 그 주소를 확인하는 방법을 말했다. 디바이스마다 주소를 다르게 정의합니다. 일부는 소프트웨어를 통해, 일부는 하드웨어를 통해 정의합니다. 데이터 수첩을 보면 알 수 있다. 종이에 명확하게 말하기 어렵다.