|
|
( c: V& j0 L6 Z) ~您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
. u. z3 Y' z1 I4 n% _7 S/ _' o
我的qt程序如下:
- _' y2 n2 e/ O( b: p4 h. b: g2 ~. d struct termios setting;
2 W* ^& @' b: o6 S fd = open("/dev/ttyS1", O_RDWR);
3 C" L# H) V5 A; u/ ~ if (fd == -1) {
( E! E5 }7 i. W0 P1 q; E LOG_INFO("open /dev/ttyS failure ...");+ y+ a# I7 p- Z- B0 w3 F
return ;
0 t; [$ ~$ r; y0 e$ g# |: n9 {4 L }3 _0 S* T8 F2 M7 |4 W! u
LOG_INFO("open /dev/ttyS1 success ...");% @9 h; x* C* N2 V0 P) y! N$ }
tcgetattr(fd, &setting);
* L1 Z1 S9 o6 J$ e" p0 F, Q speed_t speed;
+ A r2 {2 n8 b9 L; D* ?; M speed = btr;+ ~2 k0 G! J7 H4 ?6 @- G
' g4 J2 [9 Z4 {2 `( y
cfsetispeed(&setting, speed);+ s! u3 b: Q7 g$ e8 t
cfsetospeed(&setting, speed);
# N3 O, o2 R0 t; v- g% _. e cfmakeraw(&setting);
/ M. z$ e; ]4 i' D9 E setting .c_cflag |= CS8;% f6 ^& o4 Z8 f, f8 R. ]9 @
setting.c_cflag &= ~PARENB;
4 U+ P& R; } m setting.c_iflag &= ~INPCK;
. M# R9 e$ Q) c9 e setting.c_cflag &= ~CSTOPB;
% `( v0 ?. i {, E tcflush(fd, TCIFLUSH);
" _7 `( `7 z x" G. o* [3 S setting.c_cc[VTIME] = 0;. M; i4 }: }3 w0 b
setting.c_cc[VMIN] = 0;
. t: E/ E% C+ }6 X& q( b0 ` tcsetattr(fd, TCSANOW, &setting);
U$ f$ e1 V r; v( t2 M4 v% o6 a8 n6 V \9 r& s. G2 \
int ret;
) Y7 x8 ]! @) V0 v- O1 |. J" J9 b char *buff = {"hello,485write ok"} ;0 W5 C3 p; S3 ~, G7 S- X* R
ret = write(fd, buff, 17);# d/ f0 @7 s! H5 f. T4 [
3 Q$ B# }5 E) w6 I char buff1[256] ;
& C% I5 T; }& v, \: ]& o while(1){
' {9 J* u) O0 g5 g; A7 P, x* `# b- M" S6 J3 a5 H/ r: {. ?
ret = read(fd, buff1, 255);
' j \" Z) n6 P* R1 m+ q8 P if(ret > 0){
- x5 Z; V. o, t0 B6 c+ b, d0 ?" H" j( M8 s# c
write(fd, buff1, 5);
3 F9 K' X* s% @& O d7 @% Z1 N+ ^) u# q+ \0 p
LOG_INFO("rs485 receiver ret = %d " , ret);( m! P1 E$ { w. w
3 y/ K- H8 d+ m9 g/ U L. F R. T3 ]
}
1 e2 P( m0 |/ c* a5 c8 p+ \8 _
1 w0 R) b7 G# T$ Z3 c6 V" k8 N }
2 w8 t, y5 \, c, b
! y6 ]: w0 x: z 我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?- p; M0 |4 a; q1 w; h1 A* z- s
) H* `! n& M$ F- M1 k7 I2 p1 ?
9 c( Z) B8 L9 Y5 I7 H" G2 J' N+ S6 i
5 S- u$ j- i2 x ~, S4 D+ @- S |
|