|
|
$ x% Y8 E" O! o) F! I/ f4 k您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。' b, @( H6 _/ f2 r+ [) b1 ?
# {( X) ~0 u+ o5 p3 O* F
我的qt程序如下:( T" I9 ^0 a2 f. ]+ E; R! e. x
struct termios setting;/ Y* _5 A7 b' Q# E0 S) U$ e% A; v
fd = open("/dev/ttyS1", O_RDWR);7 T) D% N) {4 A" A% j' J
if (fd == -1) {
' ?+ [- r* k" Q' x7 O9 G6 v/ @ LOG_INFO("open /dev/ttyS failure ...");
0 S z+ a. C T% p return ;3 z0 L- p8 v8 g
}
" p- N) ~! G! O! ? h- H' `- Z LOG_INFO("open /dev/ttyS1 success ...");
6 A2 N5 p( D$ N3 H tcgetattr(fd, &setting);
' | D- z- H, }+ @' ^. o speed_t speed;
3 l w& c# P. T! n w3 l; [ speed = btr;
4 F' _" s$ F% U) a; K( z) ?2 D3 x2 I7 o' Y
cfsetispeed(&setting, speed);: q) J. u- H; K+ U
cfsetospeed(&setting, speed);( }/ T! y) X2 M% J4 I: u
cfmakeraw(&setting);( J- e/ m; j+ {) A. l9 ]/ Y
setting .c_cflag |= CS8;, P* o1 m8 B5 b( p0 ^2 p5 ]! f
setting.c_cflag &= ~PARENB;
- T5 ~( W* M; S; ] setting.c_iflag &= ~INPCK;
7 L$ C& e: {) N, b* i6 N( X setting.c_cflag &= ~CSTOPB;
+ Z7 T8 ?( r) ^4 C. `. P- v tcflush(fd, TCIFLUSH);
8 f6 o9 Q( P/ ~$ ~ setting.c_cc[VTIME] = 0;
# t: X/ O6 V7 Y8 t# \$ H setting.c_cc[VMIN] = 0;) Y: ]" G1 r% q, i1 j; A
tcsetattr(fd, TCSANOW, &setting);/ P+ o2 p& F$ n% j
4 l( z w, t5 ` int ret;. Z; E' f2 V+ a, o! t( _8 G. z
char *buff = {"hello,485write ok"} ;1 a* w3 m4 n9 y: F+ y3 Y2 I
ret = write(fd, buff, 17);( V- R1 Q" x4 w, l" R
1 K' n0 G W" Y3 K5 U% h0 Z) E$ o% }
char buff1[256] ;
2 A! { ]2 h+ S2 \. [ while(1){5 j/ _" t! H4 x, X9 O0 |
! j$ I& ?# U- L7 q" U3 t. i$ T0 C ret = read(fd, buff1, 255);
U4 x9 x k0 I$ \: Q% h if(ret > 0){% n8 w# [/ l B) v N T
7 H* J) a5 G8 ~8 o! [4 N
write(fd, buff1, 5);* F: g+ C- A/ R1 s# u8 d6 S [
) {, Q: N2 C8 I7 q" T
LOG_INFO("rs485 receiver ret = %d " , ret);- v4 z: Q$ w1 M( D4 u ^! c
- c: w( H# d* d- d7 n4 V1 w' P }" g* z5 p. ?0 |) H2 E5 q; L( F
5 Z# [ V8 t- s. z- p- j6 _+ s }0 b, x2 @" ^( m+ I1 s( y/ b
/ G/ h Q$ N3 u- Y6 O 我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
X$ Q3 T: `! Z3 r2 g2 o& \; [+ h+ f
5 Z* v! g9 x v5 E3 z' y* N' k
. e7 I7 _; K# V3 e
|
|