계속 되풀이되는 GPIO 함정에 대해서 명확히 결론을 위해 작성되어졌다.
다른 문서에서도 언급했지만, 시스템이 초기화 되면서, GPIO → UART → TBX 의 순서로 초기화 된다.
하지만, POD 실험을 하면서 POD_READY 핀이 제대로 값을 읽지 못하고 있음을 알아냈다. 이 문제의 원인은 바로 UART 에 있다.
현재 5517 이 제공하는 4 개의 UART 포트 중에 2 개만 사용하고 있다. 하지만, 시스템 초기화 과정에서 4 개 모두를 초기화하기 때문에, 다른 목적으로 할당할 핀까지 UART 의 지배(?)하에 들어가게 된 것이다.

일단 UART 를 초기화 해주는 부분부터 보기로 한다.

ST_ErrorCode_t UART_Setup(void)
{
    ST_ErrorCode_t ST_ErrorCode = ST_NO_ERROR;
    U8 InitList[] = { MODEM_UART_DEV, SC1_UART_DEV, UART_END_OF_LIST };        // 바로 이부분이다. 총 4 개중에 다음의 2 개만 초기화 한다
    U8 index;
 
    for ( index = 0; InitList[index] != UART_END_OF_LIST; index++ )
    {
        ST_ErrorCode |= uart_init(InitList[index]);
    }
 
    return ( ST_ErrorCode );
 
}
  • computer/digitalarena/gpio_의_함정.txt
  • Last modified: 3 years ago
  • by likewind