嵌入式开发者社区
标题:
RS485问题
[打印本页]
作者:
vtinf
时间:
2016-10-8 12:44
标题:
RS485问题
$ M" |9 ]0 F: a+ t5 ]' N! g
您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现
开发板485口能发数据,但是不能接收数据。
' h6 W, t `; [' Z# j
9 R H; u( Y L$ }- G
我的qt程序如下:
& e; q6 J* b7 h- t
struct termios setting;
- U8 W8 B1 @+ P; ] D- Z
fd = open("/dev/ttyS1", O_RDWR);
% ~4 Q: u6 W4 c$ Z/ P
if (fd == -1) {
8 r1 x P# @ P# p; P4 C
LOG_INFO("open /dev/ttyS failure ...");
; d0 @. b" i1 J& l# _1 h
return ;
) O7 I' g( E% E& c5 l% t9 o6 b( C
}
- ~0 Q* B3 e6 R4 z: J
LOG_INFO("open /dev/ttyS1 success ...");
% l/ x+ G/ R3 A4 r3 C) T. c0 H6 N
tcgetattr(fd, &setting);
( J1 @$ T: ~$ @9 a$ j: N" Q- f
speed_t speed;
. I R: M; e5 q, f% U% H( }- ^# R4 [. M
speed = btr;
: l1 ]! {. d# W, `# I
1 h0 g3 G, K3 s* ]& n( w1 V* }. q
cfsetispeed(&setting, speed);
* n6 j( M: T5 o1 P! N( U
cfsetospeed(&setting, speed);
6 Z1 \0 O+ y& Y' n2 B
cfmakeraw(&setting);
+ Y: L7 j! n# l) ]$ E) f" Q' r
setting .c_cflag |= CS8;
0 F- b$ V; ^' r2 h" ]% |
setting.c_cflag &= ~PARENB;
# J( G/ g$ b0 N" W/ a7 I) { \& Q
setting.c_iflag &= ~INPCK;
$ s# ^$ u4 ]3 R! W
setting.c_cflag &= ~CSTOPB;
$ i4 p+ B: X; m7 I
tcflush(fd, TCIFLUSH);
; O# j6 g7 `2 w; U; z7 _ |
setting.c_cc[VTIME] = 0;
) n1 w1 u) p- R8 I6 X, }! A' X
setting.c_cc[VMIN] = 0;
9 M# Q0 b( S3 t! i V* ~5 _
tcsetattr(fd, TCSANOW, &setting);
" }9 b2 o& v9 V) ]
4 P5 J+ X6 o. K2 C+ \% U
int ret;
9 ? o( G. K5 ]' `$ t
char *buff = {"hello,485write ok"} ;
9 Z m; L2 I! _/ o2 L
ret = write(fd, buff, 17);
: g! j6 Z5 c4 e" u
5 \# V; J2 |. S7 A p1 V _& F
char buff1[256] ;
0 w' p( g5 S7 ?) {, B- q' i
while(1){
- k1 a; V, C! F8 u4 H1 g! N
/ K1 y- U5 R( _1 K: \* d
ret = read(fd, buff1, 255);
" K) H, ~) x7 D
if(ret > 0){
2 J8 d2 l" _# {) B: Y) i
2 k8 i$ p- G3 s' \8 {8 V# h, W }
write(fd, buff1, 5);
7 ] q5 M- X/ a/ E9 p% }* H1 d
& s0 H) w$ g! x" h- I( y
LOG_INFO("rs485 receiver ret = %d " , ret);
6 }$ R; t# L3 M
: F* Z( @ e1 n0 E0 _' b
}
% w& ]% E2 [2 R" N" u
4 }' t0 H: A3 j$ m2 ]
}
5 M2 s6 Q+ v2 B+ W) L- s3 R7 {: m
% H5 ~. |, i S( J
我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
: u8 X- ]8 T" A+ E
. P9 a1 U% K: c: ~$ B) }" m4 u) o. @
) H' V9 i! B g
+ m0 G$ a9 `7 i" _+ Y
作者:
tenny
时间:
2016-10-8 13:21
串口助手发够255个字节了吗?
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4