본문 바로가기

[TI]/MSPM0G

[MSPM0G3507 SSM] I2C 테스트 - PCF 8574 테스트

 

MSPM0G3507을 이용해서 I2C를 테스트 해보자.

MSPM0G3507 SSM 보드의 I2C는 PA1(SCL), PA0(SDA)에 할당되어 있다.


SysConfig로 I2C를 추가 하고 기본 세팅에 클럭속도를 설정한다.

 

 

PinMux 설정을 PA0, PA0에 할당하고 저장하면 I2C기본 코드가 자동으로 생성된다.

 

 


I2C 테스트를 위한 가장 간단한 IO EXPANDER PCF8574 SSM 보드로 출력 테스트를 해보자

먼저 I2C 출력 함수PCF8574_Write 함수를 구현하면 

#define PCF8574_ADDRESS    (0x20)
#define I2C_TIMEOUT_COUNT 100000

void PCF8574_Write(uint8_t data) {
    // 1. I2C Master가 데이터를 보낼 준비가 되었는지 확인
    while (DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_BUSY);

    // 2. 데이터 전송 (주소 + 데이터 1바이트)
    DL_I2C_fillControllerTXFIFO(I2C_0_INST, &data, 1);

    // 3. 전송 시작 및 정지 조건 생성
    DL_I2C_startControllerTransfer(I2C_0_INST, PCF8574_ADDRESS, DL_I2C_CONTROLLER_DIRECTION_TX, 1);

    // 4. 전송 완료 대기
    while (DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_BUSY_BUS);
}

 

 

MSP0G3507 I2C를 이용하여 PCF8574 GPIO 핀을 확장하는 예제를 구동해 보자.

int main(void)
{
    SYSCFG_DL_init();
    
    while (1) {
        PCF8574_Write(0xF0);
        delay_cycles(1600000); 

        PCF8574_Write(0x0F);
        delay_cycles(1600000);     
    }
}