|
|
( q5 J @6 i$ `( I6 ?您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。6 Y& G' _( z4 O( V( d, r5 l5 p
- b& }2 k) a* A我的qt程序如下:: O, }' N: f0 P* R+ J+ w) K
struct termios setting;
4 S, r) M/ m$ N! P# c G+ m2 e0 b& S fd = open("/dev/ttyS1", O_RDWR);
/ Z' @# C1 K2 x- e if (fd == -1) {; ~, P5 C( T: S' I
LOG_INFO("open /dev/ttyS failure ...");! J6 S z. X/ ]4 l7 C Q: P9 i
return ;3 R. s0 W+ G9 t$ p8 i C
}0 @2 o8 G5 I" [4 E6 G
LOG_INFO("open /dev/ttyS1 success ...");
V) G7 h4 l6 r! } tcgetattr(fd, &setting);4 T. y z: ]/ o4 F6 W
speed_t speed;
! `: G+ D2 w$ z/ W" h, O# c% N speed = btr;2 {2 C8 B3 f+ r8 ^' e8 b/ @
' v: c+ r l! |) Y- r# K$ h7 j
cfsetispeed(&setting, speed);
! b* D& ^3 N4 K. D. Y: ?5 S; o) ^ cfsetospeed(&setting, speed);
9 c# G: m& Y3 f- E9 ] cfmakeraw(&setting);
' H5 Y7 ]" n0 K5 D9 M setting .c_cflag |= CS8;: i9 U9 j" \3 R
setting.c_cflag &= ~PARENB;4 V$ M: D' j6 b9 \) t3 n: Y
setting.c_iflag &= ~INPCK;
% K* _7 j9 o! l setting.c_cflag &= ~CSTOPB;' x- o) a' H/ r7 Z/ x7 Y
tcflush(fd, TCIFLUSH);
- A: G4 o+ _6 _0 m# h, x9 Z2 P setting.c_cc[VTIME] = 0;
) n# Y3 D$ p. B0 o setting.c_cc[VMIN] = 0;* h2 ?, H$ }. F2 r( W; D4 [
tcsetattr(fd, TCSANOW, &setting);
6 E, x2 Z! f5 e: {( O1 M( j% B2 P
$ @7 d6 D) H: S- j- C int ret;
2 u7 K8 g1 x" ^) L) X- z( S( u char *buff = {"hello,485write ok"} ;6 U# [: \& `6 O' Y4 X/ s
ret = write(fd, buff, 17);
7 y4 Z, Q3 p, W# q$ Q* a& k
6 U, O$ L0 z6 m. C char buff1[256] ;
. K# c) Z3 u$ g/ X# Y" }* m/ Q( | while(1){
# K; r8 R9 ~2 v0 [# c' S8 R2 _9 Y! G2 c8 m& R" [# j$ {% |
ret = read(fd, buff1, 255);: P5 j$ P. {" L1 |- E1 J$ d
if(ret > 0){2 Z% ]5 i& s9 F$ G( O& J0 }/ m
% a7 r: e6 @7 [2 s write(fd, buff1, 5);
! }. ]" Z. m* B: K* S, N* R X" z) q
LOG_INFO("rs485 receiver ret = %d " , ret);! J' A M3 n; r/ \8 T
% ]9 ?' N# U* y/ g! J" ]7 o2 z. L1 I
}
9 _. M/ c) B) C f2 M! h9 G
: v0 @+ o# E7 j/ H! `# v4 [ }
4 Z5 H4 ~/ R! i/ h/ B( O2 Y; i& v3 c* L0 w4 [& i3 s0 V4 a
我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
- {0 |7 t1 b, W5 P
" ~" a5 |! Q, ~3 A4 P
1 i# o8 B8 h* D% l+ G0 t
% K1 d8 m3 Y2 ?9 I |
|