|
7 |) Z5 H0 g, i z" Q U+ E您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。' G' k1 c# M- G, [; \
{ \8 [; S4 J! a3 r a5 T4 n7 H我的qt程序如下:; d( g( Q8 U f( _
struct termios setting;0 E1 W0 y2 N4 L0 R
fd = open("/dev/ttyS1", O_RDWR);0 [0 J) |1 r! E5 t) _% d# E ~1 j3 E
if (fd == -1) {
- G$ `( ]; q2 P: \7 t LOG_INFO("open /dev/ttyS failure ...");
* \& J# e0 `& `3 K. ~ return ;
8 ?0 T, L! C1 O1 m2 k$ h }8 u; F! ?2 e6 s+ O
LOG_INFO("open /dev/ttyS1 success ...");
- F, a# G! |1 B l3 N S5 I+ D; E tcgetattr(fd, &setting);9 b/ \+ l) Y$ W1 V) C7 g6 Y
speed_t speed;
0 O: f' v1 s1 o% d8 |8 P speed = btr;8 u$ ]/ `$ R5 i j9 |* B( Z" }
0 A7 Q$ n7 k9 K* I cfsetispeed(&setting, speed);
, u# Y$ }7 e3 K+ g* ?. k- R cfsetospeed(&setting, speed);
0 ^9 v: b4 w- v$ @0 ~1 `4 [1 U5 z cfmakeraw(&setting);
, h/ X9 e6 ^- P! r5 b' q9 Y setting .c_cflag |= CS8;
/ T# B, T7 a4 D" A; | setting.c_cflag &= ~PARENB;
a) |, T' G* J; A1 W; s6 V setting.c_iflag &= ~INPCK;* f8 {0 ~* h5 j% N; g* Z {
setting.c_cflag &= ~CSTOPB;9 q; f) S# s: V3 s
tcflush(fd, TCIFLUSH);
7 l0 a5 m+ `4 d9 L* e setting.c_cc[VTIME] = 0;; [3 T& `! ~2 l' I! g
setting.c_cc[VMIN] = 0;% f# E L h9 U/ _7 g6 @! e+ d2 i
tcsetattr(fd, TCSANOW, &setting);' \5 z) C0 v' }. r" D, c/ H
9 D0 @5 r; @$ `$ w$ C4 Q int ret;
; d2 a5 X4 e. x( c# S/ T0 H. N char *buff = {"hello,485write ok"} ;) r" a+ D/ s+ f. g5 W3 \9 j
ret = write(fd, buff, 17);
( J6 z% P1 s3 ?; _5 M! }& X; q3 b" ^: C+ ]
char buff1[256] ;5 y# U/ X' y: B# w5 d% V% i
while(1){3 `& i+ U0 V4 w
$ y, @5 v R! [# r8 q8 ? ret = read(fd, buff1, 255);; G! {/ L7 ] J& {
if(ret > 0){
& W; S' B* }5 n( K+ n( k/ c
; A) T6 v1 T! c2 [1 G e# M. B+ p write(fd, buff1, 5);0 w3 ?& i5 n: o! Z; A+ b4 |2 N
D+ u9 |6 ?$ n' g- Q" G' j LOG_INFO("rs485 receiver ret = %d " , ret);
. \% I2 H6 q% N
2 j, n3 A" w% r" s" f3 C }
, ~9 u1 B( [4 o2 h0 p' q' r( m7 ~2 W0 T$ ]7 U; q2 O- ~
} {% x4 w$ E/ k0 G# ~
" j/ g+ A5 ?; f- x 我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
; y# q& C2 g$ ^0 C4 L" x2 c
5 e8 s" s, r' _: A
5 a' p( P8 U' ~% o# s
8 f) i5 ]3 O% {' r |
|