|
|
# e6 T; O/ v9 s, T您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。3 L* K" g$ n3 E/ Z/ p, g: G7 a) Z
" g+ N4 o3 c+ ]- t5 Q+ i
我的qt程序如下:
7 Z6 M: U8 F2 b- W; J struct termios setting;: q2 H! [3 O$ [6 j( }1 u
fd = open("/dev/ttyS1", O_RDWR);
) D; m. F ]+ z- R1 u5 G if (fd == -1) {' q- G; J* a9 H0 j1 e% E
LOG_INFO("open /dev/ttyS failure ...");) L/ r3 a& p# \: C$ ~: l
return ;+ O3 Y% v& R: ?& H9 c& ^+ @9 C/ [
}
1 `2 Y% q& V6 k9 S4 R0 m LOG_INFO("open /dev/ttyS1 success ...");* E4 ~ x* S+ C) G7 R l0 W/ a @
tcgetattr(fd, &setting);
: ^! y) l" ^0 M }$ j) o2 L speed_t speed;
9 a& F& h0 h; n B" x& T% p speed = btr;
2 l2 Y) U# f8 g2 {7 ^6 }/ v- x Q+ ~' H7 l* U# e5 m6 C
cfsetispeed(&setting, speed);2 l; F* v4 y8 x9 g
cfsetospeed(&setting, speed);
! M* ^- n# W, p cfmakeraw(&setting);- k: m6 L% |; m) u
setting .c_cflag |= CS8;& d+ E* O8 ]- i, j) F1 D( e
setting.c_cflag &= ~PARENB;
# K1 t6 b" ^' ~3 W+ L+ y+ p setting.c_iflag &= ~INPCK;
+ O2 b3 p6 D( \$ q# M setting.c_cflag &= ~CSTOPB;
1 N) @- l0 m9 P8 C2 ]. A tcflush(fd, TCIFLUSH);+ c/ n( Q$ A: H7 d5 C; c0 t
setting.c_cc[VTIME] = 0;$ i0 I& U9 P+ y( Y- o/ e/ O2 {6 G4 r! O
setting.c_cc[VMIN] = 0;; r% v2 @% t, a8 n+ I. C% E
tcsetattr(fd, TCSANOW, &setting);! l: B! x$ Y# T5 `
; r) B6 A4 r, O" R& |3 b$ r2 p* g+ y int ret;3 A( {% u. h j9 ^1 h. ?
char *buff = {"hello,485write ok"} ;
# }: y, h7 R/ P$ ^8 r2 i& e ret = write(fd, buff, 17);
) z/ \" O/ L8 K
[+ U7 x, [# V char buff1[256] ;
) `& q& v% m l' ]& k+ e t while(1){3 |- ]% M2 v( M
: E2 Q' O9 s) J
ret = read(fd, buff1, 255);8 F6 v) [5 ~! _7 p0 ?$ T
if(ret > 0){9 z) Y0 d1 Q0 ?9 d8 Q4 g, O
- `* P; ]1 J* U4 S9 e7 A write(fd, buff1, 5);
' j6 p' W& f6 }, X
p5 U# }. S9 @/ |8 l2 |, f# i- n! o LOG_INFO("rs485 receiver ret = %d " , ret);
; V I) x$ X' {' K: C! u: v, N ^) q! T
}7 q5 w2 K7 T3 l4 C8 n8 |2 p: l+ E! A
5 i6 G( v' L* N s2 u' P
}/ \4 P9 o7 ^8 x& U9 k" _
" t3 Z% s6 s8 e [" o6 R, r 我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?/ e/ ^& p5 h4 z" t
7 {) S4 p6 ?* m7 s9 x0 H- j1 ]3 A; g
4 S' ~5 k; f: Q M
1 q6 y5 ?! J3 a; ?% V |
|