|
: C& e/ [+ R2 K6 Z您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。' O( K; {! C: o% ~, x; z
# {' \4 E3 V% Y) ?
我的qt程序如下:
/ u+ ?! p9 I+ }5 c: ~5 s$ s struct termios setting;' h3 a3 Y# n3 W. k: {( N; o2 F
fd = open("/dev/ttyS1", O_RDWR);: L3 n" o1 w& k) s* ?9 \0 w) T" Q
if (fd == -1) {
; |& O' ~% n, o) \# m# @( w' u u6 l LOG_INFO("open /dev/ttyS failure ...");
- {/ U% M2 l. O w7 p& L5 X6 Y. | Y return ;+ U2 w' ]8 \5 K& U
}4 A$ [( T; a3 F
LOG_INFO("open /dev/ttyS1 success ...");
P6 [% Z* E. F* M tcgetattr(fd, &setting);0 D/ V2 D# g! ^- u, I; E9 a
speed_t speed;
6 X! c8 o( v! N; K2 } speed = btr;/ |) y; Z% T, _( q/ y! W. p
# l* O4 s! E3 a! c0 Z cfsetispeed(&setting, speed);
' D3 M3 f0 X" R( I. d cfsetospeed(&setting, speed); K9 Y: J& W. o; g* u7 e8 c# W+ y, b
cfmakeraw(&setting);5 E Y k; p1 y/ d2 d
setting .c_cflag |= CS8;( H- ^9 v+ x. W+ ?' F+ I
setting.c_cflag &= ~PARENB;
7 Z! T! s. U% g+ x9 y8 Q setting.c_iflag &= ~INPCK;
! i- U, _# E" n1 ` setting.c_cflag &= ~CSTOPB;
, y2 q- Z* w8 o5 t& {* g; f tcflush(fd, TCIFLUSH);+ u( o4 h' c9 g- x Y8 l; v# f
setting.c_cc[VTIME] = 0;: X9 ?- `8 z& z4 d9 e
setting.c_cc[VMIN] = 0;
A$ P: o2 _7 m! d- P- i tcsetattr(fd, TCSANOW, &setting);) S! S) X$ L4 R: D
5 d1 b F5 W* t; x; B, d. E
int ret;
' e+ v' X8 Z i5 _8 A! p! ^ char *buff = {"hello,485write ok"} ;
8 j$ N0 K( J. S6 G \/ o% ^ ret = write(fd, buff, 17);: A* Z6 i5 @4 r X6 b+ m
# r) J# p2 f& Q( y: G
char buff1[256] ;) x) v) M2 B }3 l% F( [
while(1){* `$ |/ n# e- f6 n! r) P M+ L
/ x3 m8 \. C; | ret = read(fd, buff1, 255);3 p3 s$ z& p! _9 j3 c+ q# B
if(ret > 0){) l4 C, p# z- r* y1 y) l" G1 Z
4 b8 E, K9 h" Z( E) G; S write(fd, buff1, 5);, s% n( Y% } b. x3 a; n
& }- J3 G/ T( d8 A8 b# _) C( [! c1 n, ~
LOG_INFO("rs485 receiver ret = %d " , ret);
$ f. J- P' _) \; N2 B8 |2 P+ |* }$ a) V' g" d
}
% }1 t& ?; a, {* K( w
# P# ]- C. B4 @) E2 q }
' H# w9 V& r/ S6 ]* g; k: t. q: ?1 Z0 X& g9 Y4 G# x3 y; X7 ~
我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
6 Q8 p" ?/ A) Q; A4 X( E O+ J2 s# D( q# U" e
1 Q; V9 |8 q- X! M0 b$ }2 A$ A8 q
7 |) L8 V! ?# H3 {0 i, q |
|