|
|
2 P `: p7 g G! ?1 |) {0 g$ b您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
$ u+ z4 K G3 u) p: M8 U# u8 L' K% n, v; ?/ K* y
我的qt程序如下:
% s1 t$ z4 n7 R9 o* b" I. s6 s& E struct termios setting;( o. c, t" I9 h% H6 F5 a
fd = open("/dev/ttyS1", O_RDWR);
1 m, |/ f8 \ L' j8 F if (fd == -1) {. @, p' r' a. X% _: ~2 e% t0 R
LOG_INFO("open /dev/ttyS failure ...");# C. B+ p, ?1 m8 V. J- d3 V, v l
return ;3 ?+ k1 d+ r0 a
}
8 O+ N/ N8 m1 e* N. Q: b/ Y LOG_INFO("open /dev/ttyS1 success ...");6 u1 R/ S. f9 I# J) A! h( g7 C
tcgetattr(fd, &setting);3 B m, e6 r, ^( C& q; N
speed_t speed;
1 k/ w: m. r. e( {% ?- P8 @. a speed = btr;2 U: N# I* h4 C: F+ |; ]
! @9 \! k1 c( q/ q, X' A0 f } cfsetispeed(&setting, speed);
3 E: J5 C: y, _3 Y: q/ l3 I, x6 M cfsetospeed(&setting, speed);& B, o' q6 {3 ^1 [ t0 E
cfmakeraw(&setting);: x! t/ x/ P+ X% u
setting .c_cflag |= CS8;9 s c. o0 T/ K9 n
setting.c_cflag &= ~PARENB;2 C- ]/ o5 I% G
setting.c_iflag &= ~INPCK;
7 H1 H# R) X: {$ c% L9 [ setting.c_cflag &= ~CSTOPB;
/ F5 K+ j( ]& n' I. V tcflush(fd, TCIFLUSH);/ d) e3 r; @. e: M) G6 m
setting.c_cc[VTIME] = 0;
1 k3 X' ^5 l( C& B setting.c_cc[VMIN] = 0;
; `/ i! L) `& M( X; q, n" d( [- x tcsetattr(fd, TCSANOW, &setting);/ i( E" E5 N+ E# a* l; D' Y4 b
0 m2 F+ j; H9 y @- O. [
int ret;0 k" O3 P6 J C/ \) u6 j
char *buff = {"hello,485write ok"} ;
0 a7 U) h! n2 w7 ]; N; b2 x ret = write(fd, buff, 17);
5 F+ C+ ?9 F$ @- c' q S3 [0 {( r# h- E5 c0 J' `# `6 T' K. v9 a
char buff1[256] ;5 D' z6 i: l3 x1 m; H0 Z* C
while(1){
1 h; Y: U' F6 ]5 |
p* d( u2 t( _+ E: D V ret = read(fd, buff1, 255);' h9 h1 w! V2 H7 l
if(ret > 0){+ N4 d8 }4 v; I
! c+ ?, X5 K+ X! D write(fd, buff1, 5);& e9 L- D6 g! S6 f* w& f
( d2 D, b# e8 v0 ~! K0 K# o- J) G0 u
LOG_INFO("rs485 receiver ret = %d " , ret);
2 t9 @ x& t; T6 }2 s, m& b) E5 d) u7 X+ m
}
- i( n% X2 H0 V" A; ^
: E3 a. j# z/ x' o$ [ }8 _: z% t# v" ^* \
8 ]: [: x/ \2 ~5 ?
我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?; R2 \* h9 |7 C5 N$ ~4 W
+ U3 a- W4 w( q
/ ^( `8 d8 N( p* |' A; M/ s( x5 E/ H! v8 q7 z" b
|
|