|
|
" X( u; l8 [0 |6 i F1 ?5 u$ O您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
: t$ \% u5 D! V3 R3 S- R; H! B
, ]; E+ b/ e$ G2 U$ Y! T" k9 X我的qt程序如下:
j% ^# `( q- ]. I7 [ struct termios setting;0 K7 V# V/ z/ W" |, i0 |# R
fd = open("/dev/ttyS1", O_RDWR);
1 l& d- ^9 i4 J2 a if (fd == -1) {% x$ e) h) f$ r6 J$ y
LOG_INFO("open /dev/ttyS failure ...");( S( b+ J( p( V
return ;: l* [% @: z; H- a3 g
}7 }9 z* W& {( c6 k) w4 C1 Q
LOG_INFO("open /dev/ttyS1 success ...");
" `) W* I4 H) C0 l% s tcgetattr(fd, &setting);
, u* A4 C+ R; e+ Q& b, @ speed_t speed;4 C9 m, c C( Z/ _0 k5 f4 w! ~: @3 u3 G
speed = btr;# I" r0 F' b6 {3 I5 G3 n2 J5 z
2 S2 ?& Y2 d4 Q/ G cfsetispeed(&setting, speed);
# K V7 r+ v/ a( @) ? j cfsetospeed(&setting, speed);
7 E5 n" K# R- s+ ~ cfmakeraw(&setting);
4 }! }1 R8 E- O' u- Y setting .c_cflag |= CS8;
6 _9 D" S/ M9 f% j, G; a: x; b( J$ w' D setting.c_cflag &= ~PARENB;
: I$ J; Z6 V) P( R setting.c_iflag &= ~INPCK;3 x# {3 n( ?* J+ v
setting.c_cflag &= ~CSTOPB;7 d I' X: x) F7 ]) m
tcflush(fd, TCIFLUSH);" g/ N9 b/ n( d+ l3 [4 {
setting.c_cc[VTIME] = 0;
! q0 b& M9 l1 v! R& n4 B. G setting.c_cc[VMIN] = 0;
& I1 P- }. ?1 V Z2 z/ e' f tcsetattr(fd, TCSANOW, &setting);% I. Q6 x% j4 j7 W0 d/ I
: j* [3 D* [+ R( \ int ret;
1 _* ] @; f4 Q. v0 ^ char *buff = {"hello,485write ok"} ;8 _6 J1 K. r! w( J- R& E9 w3 ~
ret = write(fd, buff, 17);% T! l0 | L9 A
+ z3 }* G c* b5 |' U: W6 X char buff1[256] ;
. Z. w; L' h8 J( ^$ d- w" a& Q while(1){& x4 @! Z4 H3 h5 f2 d
+ S0 ^" n% |9 ^3 [, e! o
ret = read(fd, buff1, 255);' D2 v# b! {# i: b; \$ [) b3 u
if(ret > 0){
. E4 H2 H9 m/ _. n/ r |' C6 y2 ?7 F- ^: y
write(fd, buff1, 5);5 d: K& M8 C4 ?$ `5 w! R
$ P& W) a2 a. D
LOG_INFO("rs485 receiver ret = %d " , ret);
/ W2 z/ \$ K# ]' C5 t0 P
- E1 z, \/ K+ w4 i } e* O+ p0 G, v0 W. D. L5 c
+ t3 U% B) ^ ^# `' B% O2 W4 K9 J
}6 V% Z) }+ {$ ]% W
# ?% D) B5 U0 g- ~1 W+ D+ D/ f
我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?* i: g/ p3 L; X- B4 K* R- F
" p+ T# ^' H: m. M2 h4 U# z# X
Q0 Z! K; F) Q& w' a( u" f& ]) V @" i
|
|