嵌入式开发者社区

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

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

$ c' s' v% y/ @3 h; V0 T" \# O* U4 g您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。5 m/ Z; [2 {# N2 Q

% Z' [& P- D% {; U+ e0 l# x/ J我的qt程序如下:9 E+ U; ?7 b$ q
   struct termios setting;8 W- B2 D" M  u2 L/ f, Z
    fd = open("/dev/ttyS1", O_RDWR);% B$ F2 n0 {% F; `. V: h+ a* @
    if (fd == -1) {. S! R9 A, C! o5 l
        LOG_INFO("open /dev/ttyS  failure ...");
2 o$ c. h; J4 }/ P        return ;4 k# R0 D6 Z% j9 Y) G+ O2 R& _! E
    }1 N4 e) A2 g6 V1 @8 j
    LOG_INFO("open /dev/ttyS1  success ...");2 g0 {& h& U% P& @: `: F
    tcgetattr(fd, &setting);+ N# L8 s& i, k2 g4 \( O( s0 O5 I' n
    speed_t speed;8 y) w; c  b6 L, d% R/ `
    speed = btr;
+ ]. R: f, j9 D+ D0 n! O+ Z4 Y1 b4 g# j& {: w+ H
    cfsetispeed(&setting, speed);& T* s& J7 T+ @7 B
    cfsetospeed(&setting, speed);" ^: c7 O4 i) u. n
    cfmakeraw(&setting);
. }0 v6 \" X( V    setting .c_cflag |= CS8;
7 s: w0 I( h3 B" L0 [    setting.c_cflag &= ~PARENB;' ~! [+ Z* n4 }
    setting.c_iflag &= ~INPCK;
2 \; S! g4 D" k2 |    setting.c_cflag &= ~CSTOPB;
2 B2 v6 s! n7 i2 z5 W1 B$ L# g    tcflush(fd, TCIFLUSH);/ |: Q  F: U1 f) s' f9 [" M0 e
    setting.c_cc[VTIME] = 0;8 h( V* _7 L8 j3 C6 t% Q/ R
    setting.c_cc[VMIN] = 0;
  k8 m% `( K+ }6 i; c8 H    tcsetattr(fd, TCSANOW, &setting);. `7 P* k- @: M9 U6 X2 d
( ^8 \* H0 Q$ h7 b4 B2 {
    int ret;8 X. @) Y. f! Y( t3 m
    char *buff = {"hello,485write ok"} ;
, g( B0 t3 a8 ]- b7 |    ret = write(fd, buff, 17);( T4 c! I8 W  s; u$ }7 @
' T+ M  u: u/ p7 ?) l
    char buff1[256] ;7 Z" J" Q. J. z+ Y) k! m6 S
    while(1){5 S0 P$ G" B8 e
2 c8 Y1 s3 v4 r" S6 ^
          ret = read(fd, buff1, 255);
& k* n- a7 g; V! Q          if(ret > 0){( Q( ]# P) w+ v! g' s5 Y
/ C  Y# r- M# v/ W3 L
                     write(fd, buff1, 5);
0 T) F; f9 O2 n3 K+ \, r) e! R2 B& N# N5 Z/ o" A
                      LOG_INFO("rs485 receiver ret = %d " , ret);
# L) u4 B0 i) _! s4 c, ^
! ?' C' o, t( [+ g) I. Y% m          }
" {" E0 w% l2 v$ M$ D1 r/ y$ g
2 R( c& X; x$ z! ~; b+ `: R6 o3 P    }
( I" Q3 I; t/ E' |" x. q9 T6 D
2 u' L/ F, I0 B) H   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
/ D) ~/ V4 |6 q
4 o  X, B6 T) o, ^) K& W

" I3 L9 E  d( \- y/ u. Z! w! z/ r* [2 A" z$ m4 I  g) X9 J6 I

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




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