嵌入式开发者社区

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

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

3 e" e: w  l( E8 p& |) R* ^2 O您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
6 p8 o, j! e' w" L+ r7 B, [
0 R% a" Z4 [; M6 ~2 Y, n
我的qt程序如下:" [0 `! |1 Q6 z0 J6 a
   struct termios setting;
0 p/ U. U5 x" Y    fd = open("/dev/ttyS1", O_RDWR);
! V4 c( a8 Y+ R! B' M$ ?4 _    if (fd == -1) {. t* y/ W' }; Q$ D% y4 T8 W9 T
        LOG_INFO("open /dev/ttyS  failure ...");
3 k  N* J% h* v2 E) ~/ r        return ;
2 I# W" q0 V0 x" ]; p* X& u5 c    }/ _2 i# m4 d  b- n( Y
    LOG_INFO("open /dev/ttyS1  success ...");4 N9 i, z/ t2 Z( x
    tcgetattr(fd, &setting);) t" o2 b* l$ W( _
    speed_t speed;' y' |: t  w( `, z/ N  h! f$ _
    speed = btr;
: j  ^1 t$ _9 h! L
3 V0 `9 _; j2 m1 I& U" y# {2 A    cfsetispeed(&setting, speed);
0 V  ?% _! P# i3 W: ]. x8 v    cfsetospeed(&setting, speed);% @% ~. C* b" M$ l5 i
    cfmakeraw(&setting);1 j0 I1 |; _, ?" i7 E" d
    setting .c_cflag |= CS8;
3 m5 N: f1 E3 u5 G. ?! w    setting.c_cflag &= ~PARENB;3 f; H0 ~' i; x% e
    setting.c_iflag &= ~INPCK;3 C3 E  u! G1 y" d0 D
    setting.c_cflag &= ~CSTOPB;
4 Y& u8 k/ h+ [    tcflush(fd, TCIFLUSH);
. c% |5 m+ H, V6 Z    setting.c_cc[VTIME] = 0;
7 i) ^) n' {) u5 ]    setting.c_cc[VMIN] = 0;) f+ \8 s7 {# w( h2 q! ~# I
    tcsetattr(fd, TCSANOW, &setting);
8 r0 x  x6 m' Q$ c6 b8 Z
. d" m6 S8 f7 [) \# }    int ret;
$ B. X4 T0 y, O2 l: h% ~    char *buff = {"hello,485write ok"} ;
; b! G4 t. |0 {% ]5 Z  U% V    ret = write(fd, buff, 17);" L* A4 s$ F$ U1 u# Q! X
. `0 e) b  Y! z5 k1 D
    char buff1[256] ;
6 T+ e$ n: N" e1 |: s" g    while(1){3 Q# O. Z: X& J
# o5 ?; z7 U# X: V6 w; i
          ret = read(fd, buff1, 255);
% m- P! w, W. v6 t; K          if(ret > 0){
9 P8 p. _9 y; T% |* X* x, A1 J8 m
                     write(fd, buff1, 5);/ Z& [5 s% {0 V5 z

5 c: k: _% ~! Q( b" |. c                      LOG_INFO("rs485 receiver ret = %d " , ret);2 J6 F3 ]+ _3 w+ a8 |
3 Q/ U4 a4 A( g# A& l! _: L% ^
          }
1 |, \' Y+ h1 N" Z# p
' q$ j7 X3 y$ t! L6 _1 o: ^    }
* [; i+ u6 K3 Q, U# y5 a) h9 U: ~
   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
  S+ X7 o) ?' Q" X3 D
5 q6 Q6 [3 i: \. C1 `# I7 M

0 n# l* N6 C/ K8 ?" n9 U# N5 _5 g; `% w/ z6 V+ Z. f

作者: tenny    时间: 2016-10-8 13:21
串口助手发够255个字节了吗?




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