uart RX TX測試方法

2021-09-02 19:28:10 字數 2852 閱讀 8458

1.連線方法

若debug板的rx/tx沒有反轉,開發板跟debug板連線方式如下:

rx - tx,tx - rx, gnd - gnd

若debug板的rx/tx有反轉,開發板跟debug板連線方式如下:

rx - rx,tx - tx,gnd - gnd

2.測試開發板的tx功能

開發板通過debug板連線pc,pc開啟uart除錯工具

在開發板端echo "test" > /dev/ttys2,pc端uart除錯工具可以收到test字元

3.測試開發板的rx功能

開發板通過debug板連線pc,pc開啟uart除錯工具

開發板跑如下讀對應ttysx的測試程式:

#include #include #include #include int main(void)

fcntl(fd, f_setfl, 0); //閱嶈涓哄牭濉炵姸鎬? 鍘繪帀o_nonblock

//struct termios opts;

tcgetattr(fd, &opts); //鎶婂師璁劇疆鑾峰彇鍑烘潵錛屽瓨鏀懼湪opts

//璁劇疆娉㈢壒鐜?

cfsetispeed(&opts, b115200);

cfsetospeed(&opts, b115200);

opts.c_cflag |= clocal|cread; //蹇界暐modem鎺у埗綰? 鍚姩鎺ユ敹鍣?

// 8n1

opts.c_cflag &= ~parenb;

opts.c_cflag &= ~cstopb;

opts.c_cflag |= cs8;

opts.c_cflag &= ~crtscts; //鍏抽棴紜歡嫻佹帶

opts.c_lflag &= ~(icanon | echo | echoe | isig); //raw input

opts.c_oflag &= ~opost; // raw output

tcsetattr(fd, tcsanow, &opts);

//char data[1024];

while(1)

else

memset(data,0,sizeof(data));

//sleep(1);

}close(fd);

return 0;

}

pc通過uart除錯工具傳送字元,開發板可以正常收到字元:

uart設定波特率:

設定demo程式如下:

#include #include #include #include #include #include #include #include #include int set_opt(int fd,int nspeed, int nbits, char nevent, int nstop)

bzero( &newtio, sizeof( newtio ) );

newtio.c_cflag |= clocal | cread;

newtio.c_cflag &= ~csize;

switch( nbits )

switch( nevent )

switch( nspeed )

if( nstop == 1 )

else if ( nstop == 2 )

newtio.c_cc[vtime] = 0;

newtio.c_cc[vmin] = 0;

tcflush(fd,tciflush);

if((tcsetattr(fd,tcsanow,&newtio))!=0)

printf("set done!\n");

return 0;

}int open_port(int fd,int comport)

; long vdisable;

if (comport==1)

else

}else if(comport==2)

else

}else if (comport==3)

else

}if(fcntl(fd, f_setfl, 0)<0)

else

if(isatty(stdin_fileno)==0)

else

printf("fd-open=%d\n",fd);

return fd;

}int main(void)

if((i=set_opt(fd,1500000,8,'n',1))<0)

#if 0

if((fd=open_port(fdtest,1))<0)

#endif

if( tcgetattr( fd,&tmptio) != 0)

ospeed = cfgetospeed(&tmptio);

ispeed = cfgetispeed(&tmptio);

printf("ospeed: %d,ispeed: %d\n",ospeed,ispeed);

//printf("fd=%d\n",fd);

//nread=read(fd,buff,8);

//printf("nread=%d,%s\n",nread,buff);

close(fd);

return;

}

可以用dump_stack();印出call flow如下:

tty_mode_ioctl->set_termios->tty_set_termios->ms_uart_set_termios

硬體測試流程及方法 測試流程與測試方法

1.產品 開發 測試流程 需求分析 需求分析由產品人員制定,細化每乙個功能的細節,每乙個按鈕的位置,對於稍大或複雜一點的需求進行建模。需求評審 這裡會叫上所有參與專案人員進行,開發人員 測試人員。測試人員提出需求,開發人員考慮功能實現的方案與可行性 當然開發負責也是要參與的。測試人員主要是對需求的理...

軟體測試 整合測試方法

我想說起整合測試來大家一定都不陌生,但是如果說起整合測試的具體測試方法大家是否了解呢,那我來介紹一下有關整合測試的方法,希望對新手有所幫助。整合測試是單元測試的邏輯擴充套件。它的最簡單的形式是 兩個已經測試過的單元組合成乙個元件,並且測試它們之間的介面。從這一層意義上講,元件是指多個單元的整合聚合。...

功能測試 黑盒測試方法

正常的 錯誤的 極端的 的 以使用者體驗的角度 所有的流程 在沒有人提示的情況下 自己用一遍 測試用例的方法 如何溝通和獲取足夠的測試用例資訊 實戰的例子 bug預防和經驗分享 常用的測試用例方法 等價類劃分 把資料分為兩類 一類是有效等價類 輸入的資料是系統允許輸入的 另一類是無效的 輸入的資料是...