기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

아래와 같이 시험중인데 


UART baud rate를 9600 일때는 수신데이타가 소실되는 경우가 없고


115200,일때는 데이타가 소실됩니다.


위와같은 현상은 왜일어나는것인가요..??


아래는 테스트 소스입니다.

int main(void)

{

    #ifdef Debug

        printf("main --> Start !!\n");

        printf("SerialRead Call !!\n");

    #endif


    SerialRead();


    return 0;

}


void SerialRead()

{

static int rx_size = 0, r_total = 0, success_count = 0;

    char buf[1]={0}, buf1[BUFSIZE]={0};


    int fd=0, r=0;                // file descript

    int i = 0, cnt = 0;    

    #ifdef Debug

        printf("SerialRead ---> Start !!\n");

        printf("TouchPort Open !!\n");

    #endif


fd = open(TOUCHPORT, O_RDWR | O_NOCTTY | O_NONBLOCK);


    if ( fd < 0 )

    {

        perror(TOUCHPORT);

        //close(fd);

        exit(-1);

    }

#ifdef SerialSet

    #ifdef Debug

        printf("SerialSet .. Start !!\n");

    #endif


    struct termios tio;

    tcgetattr(fd,&tio);


tio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD | HUPCL;

//tio.c_iflag = IGNPAR | ICRNL; //non-parity

tio.c_iflag = IGNPAR; //non-parity

tio.c_oflag = 0;

/* set input mode (non-canonical, no echo...) */

tio.c_lflag = 0;

/* See Serial Programming How-To Documents */

tio.c_cc[VTIME] = 1;

tio.c_cc[VMIN] = 0;

tcflush(fd, TCIFLUSH);

    tcsetattr(fd,TCSANOW,&tio);


    #ifdef Debug

   printf("SerialSet .. End !!\n");

    #endif

#endif  // SerialSet


#ifdef Debug

    printf("TouchPort descript ==> %d\n",fd);

    printf("Read Call !! \n");

#endif


    while(1)

    {

        r = read (fd, buf, sizeof(buf));

if( r <= 0)

        {

            //perror("read() fail !!");

            //close(r);

            //exit(-1);

continue;

        }

r_total += r;

        for ( i = 0; i < r; i++ )

        {

buf1[rx_size] = buf[i];

printf("buf[%d]=%d\n", rx_size, buf1[rx_size]);        

if(rx_size != buf1[rx_size])

{

while(1){}

}

rx_size++;

if(rx_size==99)

{

success_count++;

printf("Count:%d\n", (success_count/11));        

rx_size = 0;

}

        }

        memset(buf,0,sizeof(buf));

    } // while


} // SerialRead()


답답하네요 고수님들 조언좀 부탁드립니다.


하늘하늘

2013.05.10 18:10:37
*.203.72.57

uart chip의 clock이 baud rate로 정확히 나누어 떨어지지 않는 경우에 발생할 수 있습니다

 

권오석

2013.05.10 22:38:31
*.50.25.71

답변 감사합니다.

error rate부분도 확인 을 해보았습니다.

현재 송신측 uart chip clock 24000000이며 수신측 uart chip clock 36000000입니다.

따라서 19200....기타 몇가지 baud rate가 나누어서 떨어짐에도 불구하고 데이타가 소실되는 현상이 발행됩니다.

다른 문제의 가능성은 없나요..??ㅜㅜ

고등어

2013.05.10 23:05:01
*.111.41.24

24,000,000 / 115,200 = 208.3333333333333333...

36,000,000 / 115,200 = 312.5

나누어 떨어지지는 않네요.

권오석

2013.05.11 01:47:36
*.50.25.71

 19200....기타 몇가지 baud rate가 나누어서 떨어짐에도 불구하고 데이타가 소실되는 현상이 발행됩니다.

신현호

2013.05.23 02:50:47
*.214.41.74

위의 테스트 코드를 보면 rx 한 데이터를 시리얼로 다시 출력하는 코드가 있는데,

 

출력하는 동안 들어오는 데이터가 overflow 되는거 아닌가요? UART controller의 내부 버퍼는 커봐야 16byte정도일텐데,

 

아마 overflow일것 같은... DMA같은걸 사용해서 버퍼를 추가로 만들어서 사용해 보심이...

List of Articles
번호 제목 글쓴이 날짜 조회 수
5828 6410 sleep mode관련 질문 드립니다. file [2] 서비 2013-05-22 1530
5827 mdev 설정파일에 관해 질문 드립니다. [2] 무우도사 2013-05-22 2065
5826 AESOP6410 PCB Artwork File 구합니다 방가방가 2013-05-22 1088
5825 ODROID X2 codec 지원 리스트? [3] 신현호 2013-05-21 1527
5824 driver에서 probe()함수가 호출되는 시점은요 ? [1] 열심히 2013-05-17 2541
5823 tvp5150포팅중 Error좀 봐주세요ㅜㅜ [1] 권오석 2013-05-17 2284
5822 6410 sleep mode 질문 드립니다. [1] 서비 2013-05-17 1670
5821 arm 보드에 APM 올리기 질문드립니다. [4] 은민아빠 2013-05-14 1656
5820 Smdk4412보드 I2C Controller SFR에 읽기/쓰기에 대해서 Board5250 2013-05-11 1249
» UART 수신문제 문의드립니다. [5] 권오석 2013-05-10 2067
5818 Android 단말에서 Rndis Host Driver를 사용할 수 있나요? acedon 2013-05-10 2950
5817 Dual LCD Support Chipset [3] 블루스카이 2013-05-09 1770
5816 외산 폰 KT MMS 사용 방법 플로이드 2013-05-08 1484
5815 USB Hub를 이용한 USB-to-Serial(FTDI) 동작 에러 제일파프2 2013-05-07 2535
5814 uboot 관련 질문입니다 tftp 가 잡혔는데 안넘어가는이유. file [2] 사마사마 2013-05-06 1576
5813 sd card 강제로 제거 하였을 경우 block이 됩니다. 시안 2013-05-03 1216
5812 [arndale][origen] 커널 2.6이 돌아가는 리눅스 [3] monad 2013-05-02 2931
5811 dm900b vs LAN9220 차이에 대해서 [2] gudrl 2013-05-02 1545
5810 에뮬에서 adb 사용? [2] wizard14 2013-05-02 2076
5809 동적라이브러리 so 파일에서 class 를 export 하는 방법??? [1] blue0sky 2013-04-30 1333

사용자 로그인