嵌入式开发者社区

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

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

$ M" |9 ]0 F: a+ t5 ]' N! g您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
' h6 W, t  `; [' Z# j
9 R  H; u( Y  L$ }- G
我的qt程序如下:
& e; q6 J* b7 h- t   struct termios setting;- U8 W8 B1 @+ P; ]  D- Z
    fd = open("/dev/ttyS1", O_RDWR);
% ~4 Q: u6 W4 c$ Z/ P    if (fd == -1) {
8 r1 x  P# @  P# p; P4 C        LOG_INFO("open /dev/ttyS  failure ...");; d0 @. b" i1 J& l# _1 h
        return ;
) O7 I' g( E% E& c5 l% t9 o6 b( C    }- ~0 Q* B3 e6 R4 z: J
    LOG_INFO("open /dev/ttyS1  success ...");
% l/ x+ G/ R3 A4 r3 C) T. c0 H6 N    tcgetattr(fd, &setting);
( J1 @$ T: ~$ @9 a$ j: N" Q- f    speed_t speed;
. I  R: M; e5 q, f% U% H( }- ^# R4 [. M    speed = btr;
: l1 ]! {. d# W, `# I1 h0 g3 G, K3 s* ]& n( w1 V* }. q
    cfsetispeed(&setting, speed);
* n6 j( M: T5 o1 P! N( U    cfsetospeed(&setting, speed);6 Z1 \0 O+ y& Y' n2 B
    cfmakeraw(&setting);+ Y: L7 j! n# l) ]$ E) f" Q' r
    setting .c_cflag |= CS8;0 F- b$ V; ^' r2 h" ]% |
    setting.c_cflag &= ~PARENB;# J( G/ g$ b0 N" W/ a7 I) {  \& Q
    setting.c_iflag &= ~INPCK;
$ s# ^$ u4 ]3 R! W    setting.c_cflag &= ~CSTOPB;$ i4 p+ B: X; m7 I
    tcflush(fd, TCIFLUSH);
; O# j6 g7 `2 w; U; z7 _  |    setting.c_cc[VTIME] = 0;) n1 w1 u) p- R8 I6 X, }! A' X
    setting.c_cc[VMIN] = 0;9 M# Q0 b( S3 t! i  V* ~5 _
    tcsetattr(fd, TCSANOW, &setting);" }9 b2 o& v9 V) ]
4 P5 J+ X6 o. K2 C+ \% U
    int ret;9 ?  o( G. K5 ]' `$ t
    char *buff = {"hello,485write ok"} ;
9 Z  m; L2 I! _/ o2 L    ret = write(fd, buff, 17);: g! j6 Z5 c4 e" u

5 \# V; J2 |. S7 A  p1 V  _& F    char buff1[256] ;0 w' p( g5 S7 ?) {, B- q' i
    while(1){- k1 a; V, C! F8 u4 H1 g! N
/ K1 y- U5 R( _1 K: \* d
          ret = read(fd, buff1, 255);
" K) H, ~) x7 D          if(ret > 0){2 J8 d2 l" _# {) B: Y) i
2 k8 i$ p- G3 s' \8 {8 V# h, W  }
                     write(fd, buff1, 5);7 ]  q5 M- X/ a/ E9 p% }* H1 d
& s0 H) w$ g! x" h- I( y
                      LOG_INFO("rs485 receiver ret = %d " , ret);6 }$ R; t# L3 M
: F* Z( @  e1 n0 E0 _' b
          }% w& ]% E2 [2 R" N" u

4 }' t0 H: A3 j$ m2 ]    }
5 M2 s6 Q+ v2 B+ W) L- s3 R7 {: m% H5 ~. |, i  S( J
   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?: u8 X- ]8 T" A+ E
. P9 a1 U% K: c: ~$ B) }" m4 u) o. @
) H' V9 i! B  g

+ m0 G$ a9 `7 i" _+ Y
作者: tenny    时间: 2016-10-8 13:21
串口助手发够255个字节了吗?




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