|
6 U' r6 T! R- p0 f' F- C: l
您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。7 K. d7 F' n: H5 N! F; A
+ P9 }5 e& F; y我的qt程序如下:
+ ~1 B9 D6 C) Y6 Z) @, e0 s struct termios setting;
" ?$ q# t1 r$ B4 T$ U Q9 z! |0 o1 j fd = open("/dev/ttyS1", O_RDWR);* p, ]7 q( v% ], G9 S- C1 V- }1 ^$ \$ s
if (fd == -1) {
/ e+ q! n8 N( Y LOG_INFO("open /dev/ttyS failure ...");, i/ U: g+ k7 X4 D2 r0 z& L
return ;$ H+ @7 U- K" S6 J& A
}
' M6 P6 b/ o# f3 a LOG_INFO("open /dev/ttyS1 success ...");. L- k, _' F9 t% K8 ?3 A
tcgetattr(fd, &setting);
) ^+ R0 _8 a9 B6 c0 `# X speed_t speed;
8 }% @5 O1 @6 `3 I speed = btr;
: M; O# b& U, T0 j- |$ V; s. S: E
, ?. J$ | I+ ?7 C3 y cfsetispeed(&setting, speed);) `; s" {& z' V" M. S
cfsetospeed(&setting, speed);
& u3 ?# g R& F3 c cfmakeraw(&setting);9 N6 n6 Y% L7 `" w4 Q
setting .c_cflag |= CS8;, W& Q# G4 s7 D8 e' x- T) [! n) m& {
setting.c_cflag &= ~PARENB;
/ a1 k* b2 X% H2 { setting.c_iflag &= ~INPCK;
2 {/ V$ n' p+ ]5 F- _7 t setting.c_cflag &= ~CSTOPB;
$ ]2 |% f9 H1 r4 N tcflush(fd, TCIFLUSH); t6 m9 b# g8 x5 i; } H. H& G9 m
setting.c_cc[VTIME] = 0;
0 n3 I$ a& W# G: ~* @ setting.c_cc[VMIN] = 0;
5 q$ K) A. M! _. q$ g; l tcsetattr(fd, TCSANOW, &setting);* l5 C$ U3 {( }( L; l1 F
; q6 V4 e7 N+ f
int ret;
% F: Z0 l5 K: n/ u5 V! C- z char *buff = {"hello,485write ok"} ;
5 x# N1 |" p' m2 N0 b6 b ret = write(fd, buff, 17);# @9 @' Y8 W2 D; x
% S: ^4 k; z, _, W
char buff1[256] ;
) l8 ?( f. R5 F8 S while(1){
1 e! l: m. Z: D+ Z0 s! L
) k; b5 {6 ~5 [' {4 V0 s" y2 ] ret = read(fd, buff1, 255);
& {3 p7 a' F+ K4 ~1 M1 L6 f" F if(ret > 0){) A4 d7 n d8 s# P. \2 H1 X) S$ C
: k- _: a! q* E; R! O% v) M
write(fd, buff1, 5);
7 I: b, l3 y. @: v+ s0 d% W$ s& I
. V) S/ C2 f% z0 q. B7 u LOG_INFO("rs485 receiver ret = %d " , ret);! n/ g0 q' g7 |. q3 C2 |# g
% J7 |! i0 u: `+ L4 E/ z2 i }. b: ]2 T7 Z! W9 p
# p5 j% L; i3 d4 O9 `2 Y
}1 z. g. a) x+ ? W; k5 d
: ]9 g! a3 l7 {4 V 我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
; O% H5 s e% Z$ O; S
4 J" ^* G% l( I
* L: [4 H) d# p
8 z6 y8 n& c3 U4 p. D- a0 n- J9 G. V |
|