嵌入式开发者社区

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

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

, b  D: |; ?- H( U6 s( ~/ z8 ~1 \您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。- ^/ i6 u: c  g  }* _; O. h: F- O
& V- U" E& d6 a0 {! |
我的qt程序如下:7 C( ^0 a- S8 a: r7 {
   struct termios setting;
% v. A2 ~2 K9 P6 A7 R    fd = open("/dev/ttyS1", O_RDWR);& h: h7 I) I, {
    if (fd == -1) {
1 J5 U5 r/ U+ K! W9 L        LOG_INFO("open /dev/ttyS  failure ...");
5 g! a  x( ^/ X        return ;* x, U/ C7 C9 n" ?& t) J4 I& \
    }
! M- }6 q2 x% ?$ p3 [+ z    LOG_INFO("open /dev/ttyS1  success ...");$ f) ?( o" r3 J0 r0 K( ?" D
    tcgetattr(fd, &setting);
. T$ T/ Y3 _* }4 ~: l    speed_t speed;0 i+ C4 |6 r/ A; F% E9 B2 H
    speed = btr;6 E4 P4 e- R4 |
$ u- D; S" p( d% _3 f! O) P
    cfsetispeed(&setting, speed);# v  m$ g7 ^# W9 l+ o: A1 X
    cfsetospeed(&setting, speed);
" k# H) b) I7 J# \& ^% q    cfmakeraw(&setting);
" h/ ?5 r+ y4 S0 H) A9 _# \' a' a    setting .c_cflag |= CS8;
" Y" M* \# M2 t, e! M# H" Z% ~    setting.c_cflag &= ~PARENB;
" D# y9 }' m. w8 ]7 p* C, A& c    setting.c_iflag &= ~INPCK;
7 s! }7 R& b4 y    setting.c_cflag &= ~CSTOPB;( R8 d: B9 W# X7 X
    tcflush(fd, TCIFLUSH);/ B/ E/ L( c$ p
    setting.c_cc[VTIME] = 0;, o- |9 i/ Z: \' L' ?
    setting.c_cc[VMIN] = 0;
$ ?, I5 a. n0 p$ B$ S3 M    tcsetattr(fd, TCSANOW, &setting);, I* d2 i, p( X: n- J
3 l) z6 \0 B( P$ r- O8 h; G
    int ret;
% J4 x. N4 v/ x  a' \$ D3 L    char *buff = {"hello,485write ok"} ;% t- s# |& l7 f8 [
    ret = write(fd, buff, 17);" ]+ \0 d' x& }4 m4 v" u
- C% e1 }# U' W6 s' l
    char buff1[256] ;  V5 W! ~2 q' P" m5 g
    while(1){
; ^4 j  f) `7 |3 y" @$ |- h8 l7 D
1 @' e) t) ?7 M' |& F          ret = read(fd, buff1, 255);$ F+ G& X# k4 s% H) v4 j
          if(ret > 0){
( }3 ^) g1 j9 V: B, ^( @. [$ F8 i% w1 g$ j2 u7 H; w1 i
                     write(fd, buff1, 5);
' t- m$ i. L+ S" V  u2 }2 U6 x0 v+ }, m# Q' V8 ]4 Q* V
                      LOG_INFO("rs485 receiver ret = %d " , ret);
. o# @2 @  V- Q  n# k/ Z" F
- y; ]+ U& B6 e0 g$ ?          }
. o1 i9 b. [* p  W9 W* w, c2 D/ n* k9 B
    }
5 z7 V* _- S3 g8 y3 x; D6 k( _8 E/ x9 I# n# s- O( g9 x. V
   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
& N' q' R  V6 M! E$ }/ Q( O5 [

1 L1 z  S8 i* \' p+ b0 a3 |

- N7 L4 _4 v8 F
8 `7 R# }' M5 w) @0 q
作者: tenny    时间: 2016-10-8 13:21
串口助手发够255个字节了吗?




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