|
- B7 R* i( [' W2 y# O/ `
您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。0 q* [; q6 ~# I" Y. u' p
2 ~. V" d+ J8 Y0 Z' _8 v; b
我的qt程序如下:
( D( F B5 R7 e1 M4 h struct termios setting;
8 |) A1 l8 }; }2 N7 g fd = open("/dev/ttyS1", O_RDWR);% n7 i/ c( h( x2 v+ H. z* r" [
if (fd == -1) {
3 E1 @2 {+ T3 ?7 ~: L9 {. ^ s, `( i LOG_INFO("open /dev/ttyS failure ...");% U6 E. W2 }7 H. Q5 E
return ;1 w# O5 ~& R1 A* I+ A: [9 G
}
- l2 B5 w5 k9 [% \/ p9 i+ W+ x LOG_INFO("open /dev/ttyS1 success ...");
& ?: O' ^2 J$ U) x0 x4 f tcgetattr(fd, &setting);8 B4 k* F) F2 z4 w$ k7 ?6 k1 N% u
speed_t speed;
% p2 o. `2 M9 L/ v speed = btr;0 L5 Q. J# Q. ^% o" q
1 E" T! h. x- |& ` cfsetispeed(&setting, speed);
& r: |0 b9 J) l cfsetospeed(&setting, speed);
% J, U( i- e4 [- _( _0 }1 j cfmakeraw(&setting);) A: v3 K& d. l: F% {
setting .c_cflag |= CS8;
; C8 q. ^6 M) `; t! f: m& V$ P setting.c_cflag &= ~PARENB;
/ m, X! c$ Q5 v setting.c_iflag &= ~INPCK;
; G0 y- v$ M7 C% y# j setting.c_cflag &= ~CSTOPB;% }9 u. J: v7 n1 }# A5 G: ^
tcflush(fd, TCIFLUSH);' F: j6 D/ D9 q. S S
setting.c_cc[VTIME] = 0;" m+ V1 Q) i9 p- b, C1 T
setting.c_cc[VMIN] = 0;
( V g/ | H% i" w/ ~ tcsetattr(fd, TCSANOW, &setting);
: _" S: y+ M! ?. m2 O0 M$ W0 |( z5 P. N0 Z' t8 G$ m0 D
int ret;, U& C& |; S- f1 l }
char *buff = {"hello,485write ok"} ;
' I- d5 A' L, o1 n/ s- e6 z ret = write(fd, buff, 17);7 p1 x( D5 }, I% d4 X* ~
6 \6 Z2 q. O% Q) r3 o' n9 q4 o
char buff1[256] ;
' m% {" k! A5 y while(1){
! L: n) @3 {% q3 T+ D+ P
/ c6 v& j( s. C) a1 ~ ret = read(fd, buff1, 255);
9 A1 \& V# F0 ^2 S% x5 I) s7 S if(ret > 0){8 k: L( S# A1 `+ G; \6 h: J7 L0 u" F8 ^
$ U7 D+ B l/ @0 h write(fd, buff1, 5);* m' M. s$ [1 t8 `0 ?2 m
' N/ p I- L4 O) @ P LOG_INFO("rs485 receiver ret = %d " , ret);
$ a# N; b9 T% A
# L3 y1 ^" f- w1 G8 b. V: L }
" i; T: M) B; F0 E2 {# R: y
1 B- _9 ~0 J% q3 [) p }
$ M- {. C! m7 n' O5 B D% s8 _2 f. r4 h* R4 ?$ y8 s
我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
) F+ ~+ c' x* B& E/ W4 Q* A, h7 w6 A! W2 ~; H
7 [7 T e8 l- E0 k1 B
, r w! N9 `, v' R3 z2 U7 J |
|