|
|
' A( F' o5 t/ a您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。1 d2 k1 x8 d) | K% k/ Q
- q% e8 f8 @/ M" q1 ]; d# W
我的qt程序如下:
0 n- ], I8 x+ W# ~3 H9 U4 q/ P- u struct termios setting;
: u2 r3 V$ }2 p1 J; u- u- l: ? |/ ` fd = open("/dev/ttyS1", O_RDWR);
5 v& j1 P$ y f* O6 ]8 F if (fd == -1) {
) A( u! M! p4 q5 D LOG_INFO("open /dev/ttyS failure ...");% I0 i$ T) [& t* Q! m0 P& g7 O( N
return ;
, d4 G1 S- M7 U7 T+ W }
5 W4 A2 }5 ]1 E, [* a2 [ LOG_INFO("open /dev/ttyS1 success ...");; v- l$ L; P/ o2 d/ `
tcgetattr(fd, &setting);
6 G8 v: B/ {. g& h& q+ t' L speed_t speed;% u, ^8 J, M& w0 }: |# b% m
speed = btr;, q. {- U. q( J; u* `' \$ |- I, m
8 I2 V+ }! B U" N: d cfsetispeed(&setting, speed);) ?2 ]" P4 l, b6 X6 E" T
cfsetospeed(&setting, speed);
# I) P: \# {, b) a& L/ m6 D+ { cfmakeraw(&setting);
/ E1 X: p. k+ h5 S7 y setting .c_cflag |= CS8;
w0 o) N- l1 g! Q! ^ setting.c_cflag &= ~PARENB;
; E e! c; L0 [4 X& i" z& C# ?& Q+ T setting.c_iflag &= ~INPCK;8 n; s9 H6 `( R6 i) J) k% Y
setting.c_cflag &= ~CSTOPB;
' m0 t5 b5 h' _" c6 Z tcflush(fd, TCIFLUSH);' Z, k% i. F$ U$ i) Z5 M" n
setting.c_cc[VTIME] = 0;
0 L6 G7 V4 \8 ^& v7 L setting.c_cc[VMIN] = 0;
! j( Z% q8 ]3 x8 V2 X( f tcsetattr(fd, TCSANOW, &setting);
4 j* l# @; { W5 E
8 y. O& |/ E( o5 B' R; B6 b int ret;
; m1 Z$ a0 B' R4 q char *buff = {"hello,485write ok"} ;0 _6 o! K3 Q3 B
ret = write(fd, buff, 17);" x9 Y, S* I0 F# l# }: e
% Y9 T$ X8 `+ i3 ~ N9 m
char buff1[256] ;" Y" y( u; q2 t* ]* l8 a
while(1){
, Q7 g- H0 L- S6 @/ z* w2 J/ p& ? F2 A' S" e* ?& _
ret = read(fd, buff1, 255);2 S/ V1 _( @2 ^: t1 ?
if(ret > 0){( k2 z7 t# \% }2 ?' {0 X' D9 }7 @
5 `' M/ m% e3 m8 C% ?
write(fd, buff1, 5);
+ v' i* r. S: o* a, d8 X/ {, V$ B' _5 O
LOG_INFO("rs485 receiver ret = %d " , ret);
- D) ~+ k$ D0 R4 H" `# _% u1 G: [
}
, i5 X% w% x' W+ c1 {% @& e" }
& r$ N4 v7 _/ y' F9 \" p& Y }
5 s6 q6 S" p' L' g$ D
3 Q. l! x) r3 ` 我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
, M; J' u& U$ r' a9 k1 T: o
! K. t+ ~$ u/ m7 A; N& j# \& x, {/ @, r6 z, @8 a7 B
) ^+ J/ B6 O z+ K( X |
|