嵌入式开发者社区

标题: RS485问题 [打印本页]

作者: vtinf    时间: 2016-10-8 12:44
标题: RS485问题

- x* r  a6 z! b. D. S$ g您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
7 b5 w9 `; f' [0 Q* w" @1 N
# K6 H& R$ \0 P) I  X+ ^
我的qt程序如下:
) {- b+ u! M% A  h' Z, g& c) z) A   struct termios setting;, b" f  k9 V: e% @1 ]6 B
    fd = open("/dev/ttyS1", O_RDWR);. ]/ Z  `1 p+ c. Z# z( ~
    if (fd == -1) {
  s: }3 ]5 e' n        LOG_INFO("open /dev/ttyS  failure ...");# ~9 h  H0 o8 p  I, k5 P8 }0 |
        return ;
0 Z% w% e, J& y    }% H) ^/ G8 M/ f! c% b0 f
    LOG_INFO("open /dev/ttyS1  success ...");! }3 }8 U2 p% J5 K
    tcgetattr(fd, &setting);
/ |/ w6 m+ {+ r+ J" D3 e    speed_t speed;
( x* s' R7 y2 M$ H. B( C    speed = btr;
9 w2 Q- p/ c6 Y8 }' |0 Z1 ^6 g' y
: k  f/ Z/ Z1 E# @: j    cfsetispeed(&setting, speed);
5 b% `: o( \( H7 c/ A8 B- P# m    cfsetospeed(&setting, speed);
* M; {5 x) T- j  R0 _2 x    cfmakeraw(&setting);
7 ?9 v% {: j7 }% U5 f/ H& g  E& R    setting .c_cflag |= CS8;
: m" L6 o8 P+ _$ ^0 I( R, h    setting.c_cflag &= ~PARENB;
' T! n: k- w2 L; M0 t( Z    setting.c_iflag &= ~INPCK;
3 b3 J* F0 x# e9 C! I    setting.c_cflag &= ~CSTOPB;
5 v# }4 T& q# u* t    tcflush(fd, TCIFLUSH);; s! n2 J! {! H  m( O# q- H& ^
    setting.c_cc[VTIME] = 0;3 U7 n; \9 d4 a- U* M2 C
    setting.c_cc[VMIN] = 0;
" n. |# {1 J( I: C$ w# ^; U! n- m! m    tcsetattr(fd, TCSANOW, &setting);& |) J$ V. `9 m2 _

( O$ I; U- B% M5 @$ U$ C0 ~  G    int ret;
  L$ D" q( l4 f( f5 q5 x    char *buff = {"hello,485write ok"} ;; W& C7 _6 f3 }3 g0 z( H' w% n
    ret = write(fd, buff, 17);
6 o1 H! b- {, D+ N4 X& r6 a- S
0 ]+ u: s" D6 i- a/ _    char buff1[256] ;: d8 G& g# d" ]0 ?/ b1 z
    while(1){" o. T2 [$ D) ~% Z7 H  t

8 J/ @0 G; K/ m3 s: S          ret = read(fd, buff1, 255);8 Q5 v( u' n; N6 E: \  j
          if(ret > 0){" V, o8 u" v* f" ^4 s5 J
# A) h: x9 w7 _% n0 _
                     write(fd, buff1, 5);4 c3 X: ~1 e- z0 e

% ?6 C5 m( w8 Q                      LOG_INFO("rs485 receiver ret = %d " , ret);
! G) a& |; Z5 ?! Y4 \; ^* L2 q' f& y4 f$ P5 m
          }
& Z# S: k+ @9 ~2 y
/ S& B8 C% K5 P! k+ m    }3 F2 `" ^" N$ S% W. D& @1 p
3 A1 Z2 @7 p8 {& Y. S
   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?2 K4 h: b5 O6 K9 A9 M" D
% O, V/ T& C6 Y

0 r3 v8 s9 j/ B  h7 K( L; l
& J7 h; Z4 @& z, w- {
作者: tenny    时间: 2016-10-8 13:21
串口助手发够255个字节了吗?




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4