학습
모듈
IoT Hub를 사용하여 Azure Sphere용 보안 IoT 솔루션 개발 - Training
Azure Sphere, Azure RTOS, Azure IoT Hub를 사용하여 매우 안전한 IoT 솔루션 개발
Azure Sphere는 master 모드에서 Inter-Integrated 회로(I2C)를 지원합니다. I2C는 저속 주변 장치를 마이크로 컨트롤러에 연결하는 직렬 버스입니다. I2C는 master 디바이스가 하위 디바이스 집합을 제어하는 다중 master/다중 하위 모델을 사용합니다. I2C는 컨트롤, 전원 스위치 및 센서 설정과 같은 마이크로 컨트롤러와의 간단한 경량 통신만 필요한 주변 장치와 함께 사용되는 경우가 많습니다.
애플리케이션은 Applibs I2C API를 호출하여 I2C master 인터페이스에서 작업을 수행하여 I2C를 통해 주변 장치에 액세스할 수 있습니다. LSM6DS3 I2C 샘플에서는 MT3620 디바이스에서 I2C용 하드웨어를 구성하고 애플리케이션에서 I2C를 사용하는 방법을 설명합니다.
I2C를 사용하는 애플리케이션은 I2C에 적합한 헤더 파일을 포함하고 애플리케이션 매니페스트에 I2C 설정을 추가해야 합니다.
모든 애플리케이션은 대상 하드웨어를 설정하고 해당 하드웨어 정의 헤더 파일을 포함해야 합니다.
#define I2C_STRUCTS_VERSION 1
#include <applibs/i2c.h>
#include "path-to-your-target-hardware.h"
I2C_STRUCTS_VERSION
헤더 파일을 포함하기 전에 전처리기 정의를 선언합니다. 애플리케이션에서 사용하는 구조체 버전을 지정합니다.
"path-to-your-target-hardware.h"를 하드웨어의 헤더 파일 경로로 바꿉니다.
I2C API를 사용하려면 애플리케이션 매니페스트에 I2cMaster
기능을 추가한 다음 각 I2C master 인터페이스를 기능에 추가해야 합니다. 이렇게 하면 애플리케이션이 인터페이스에 액세스할 수 있습니다.
Azure Sphere 애플리케이션 매니페스트에는 애플리케이션 매니페스트 에 대한 자세한 내용이 있습니다.
코드에서 하드웨어에 대해 정의된 상수를 사용하여 I2C 인터페이스를 식별합니다. 컴파일러는 앱을 빌드할 때 이러한 값을 원시 값으로 변환합니다.
예를 들어 MT3620 RDB(참조 개발 보드)를 대상으로 하고 두 개의 I2C master 인터페이스를 구성하는 애플리케이션 매니페스트에서 발췌한 내용은 다음과 같습니다.
"I2cMaster": [ "$MT3620_RDB_HEADER2_ISU0_I2C", "$MT3620_RDB_HEADER4_ISU1_I2C" ],
다음 발췌문에서는 Avnet MT3620 시작 키트를 대상으로 하는 애플리케이션에서 동일한 I2C master 인터페이스를 지정하는 방법을 보여 줍니다.
"I2cMaster": [ "$AVNET_MT3620_SK_ISU0_I2C", "$AVNET_MT3620_SK_ISU1_I2C" ]
I2C master 인터페이스에서 작업을 수행하기 전에 I2CMaster_Open 함수를 호출하여 열어야 합니다.
master 인터페이스를 연 후 설정을 변경할 수 있습니다.
Azure Sphere는 I2C를 사용하여 읽기 및 쓰기 작업을 수행하기 위한 몇 가지 옵션을 지원합니다. 이러한 옵션은 모두 차단, 동기 작업입니다.
단방향 쓰기 또는 읽기 작업의 경우 I2CMaster_Write 또는 I2CMaster_Read 호출할 수 있습니다. 이는 하나의 작업만 지정하고 함수 호출에 하위 디바이스의 주소를 포함하기 때문에 I2C master 인터페이스에서 작업을 수행하는 가장 간단한 방법입니다.
I2CMaster_WriteThenRead 호출하여 다른 트랜잭션의 중단 없이 단일 버스 트랜잭션에서 결합된 쓰기를 수행한 다음 읽기 작업을 수행할 수 있습니다.
일부 POSIX 인터페이스와의 상호 운용성을 위해 POSIX read(2) 및 write(2) 함수를 호출하여 단방향 트랜잭션을 수행할 수 있습니다. read(2) 또는 write(2)를 호출하기 전에 I2CMaster_SetDefaultTargetAddress 호출하여 하위 디바이스의 주소를 설정해야 합니다.
이러한 함수를 호출하여 하위 디바이스가 있는지 확인하기 위해 0 바이트 쓰기 작업을 수행할 수 있습니다. 읽기 또는 쓰기 작업이 실패하면 애플리케이션에서 요청 재발행을 처리해야 합니다.
인터페이스를 닫려면 표준 POSIX 함수 close()를 호출해야 합니다.
이 섹션에서는 MT3620에서 Azure Sphere를 실행할 때만 적용되는 I2C 옵션에 대해 설명합니다.
MT3620 칩에 대한 I2C 사양은 MT3620 지원 상태에 나열됩니다. MT3620 개발 보드 사용자 가이드에서는 배선에 대한 핀 레이아웃 및 기능을 설명합니다.
Microsoft Azure Sphere SDK 설치 디렉터리의 HardwareDefinitions 폴더에는 일반적인 Azure Sphere 개발 보드, 모듈 및 칩에 대한 정의가 포함되어 있습니다. 여기에는 다른 MT3620 하드웨어와 함께 MT3620, MT3620 RDB에 대한 master 인터페이스를 정의하는 헤더 및 JSON 파일이 포함되어 있습니다. HardwareDefinitions 폴더의 기본 위치는 C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions
Windows 및 /opt/azurespheresdk/HardwareDefinitions
Linux에 있습니다.
학습
모듈
IoT Hub를 사용하여 Azure Sphere용 보안 IoT 솔루션 개발 - Training
Azure Sphere, Azure RTOS, Azure IoT Hub를 사용하여 매우 안전한 IoT 솔루션 개발