嵌入式开发者社区

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

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

8 H1 Q: T" J  N您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
1 Z: ]+ n/ A# L( O6 S( k
, j- ?* @) g9 t* }: G5 \. o
我的qt程序如下:
2 P% Q$ p% t& n7 N0 j3 w( o   struct termios setting;" H9 |. A9 ?% e# w( V9 e0 }9 X. _6 l
    fd = open("/dev/ttyS1", O_RDWR);
0 y  _* i: s4 t% Y    if (fd == -1) {6 F, t3 C1 n) _! `. T+ t# i" ~
        LOG_INFO("open /dev/ttyS  failure ...");
- |3 m. u9 q! z& f        return ;3 E! I- w* M) w  {5 |
    }0 {) b3 t! f8 G0 V! ~  ]  n
    LOG_INFO("open /dev/ttyS1  success ...");
  _( P6 a! W) U+ p% W    tcgetattr(fd, &setting);3 B* P7 C4 }2 d) b: U( W, X, M
    speed_t speed;
# ?# g' }1 i3 F2 h3 r) z* z    speed = btr;% ^- R& w* b& t3 K
8 v+ _$ \* G$ t, W+ s4 p
    cfsetispeed(&setting, speed);' i- z+ A6 L4 N9 e! V- i  V" T
    cfsetospeed(&setting, speed);
, R" d4 s6 d5 A7 c    cfmakeraw(&setting);  |' u0 a) a% G1 t) k8 B6 I3 f  ^
    setting .c_cflag |= CS8;/ b/ y+ j1 v$ L
    setting.c_cflag &= ~PARENB;' ~" |9 r1 H( Z
    setting.c_iflag &= ~INPCK;6 C7 |  u" ~( a- b
    setting.c_cflag &= ~CSTOPB;
* F- R& ]+ Q- v5 e6 Y& S    tcflush(fd, TCIFLUSH);
! j# T  M+ w& v. F    setting.c_cc[VTIME] = 0;
9 V5 g# k2 G. D% d0 F- C    setting.c_cc[VMIN] = 0;  g' u& C3 x, t$ f' A2 A
    tcsetattr(fd, TCSANOW, &setting);
3 {) \6 f3 v# I  B% d# {( o8 ^5 b4 u0 q5 `+ a8 V
    int ret;7 `7 t& z- }  j8 D6 W/ A2 V
    char *buff = {"hello,485write ok"} ;
6 e- d7 I8 p5 L! L6 r  V' V    ret = write(fd, buff, 17);
5 \- A# ], O3 [- Q) I6 Y% s! z4 ?9 y8 y
    char buff1[256] ;  K' {5 o  ?/ R% W2 r/ ?
    while(1){
% @0 L; }) ?% F
6 Y$ f% K& b" j# H, D; {; f) ^5 p          ret = read(fd, buff1, 255);1 c/ N/ M6 S8 j$ n
          if(ret > 0){
) J+ m: A2 J( P$ b( ]
! m: }3 @& C: s$ M. c! K                     write(fd, buff1, 5);
% P, }4 G% L1 \' ^& t" D# h) Z( Y, F# I& L
                      LOG_INFO("rs485 receiver ret = %d " , ret);
( U8 W. O% B& q% Q3 @5 w, w2 F
8 T; l$ H3 x7 c0 S/ S& a          }6 W4 _0 P% `9 e, h% V% n+ R+ O1 f) v

/ y- g% X  b/ S% X0 N# T/ c/ N    }! Z% R5 _5 H7 L
+ q( Y5 E* n3 ~- T
   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
9 M6 x: `& m& ?0 D1 L5 q/ l/ V

+ K. l/ A  i+ C$ h6 _, V

7 X! P$ q+ _$ q6 o! h
5 {% r6 n1 f. s8 }% p
作者: tenny    时间: 2016-10-8 13:21
串口助手发够255个字节了吗?




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