嵌入式开发者社区

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

作者: vtinf    时间: 2016-10-8 12:44
标题: RS485问题
& o* F5 O$ O% V3 N: V
您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
( d/ Y% [& z7 {; a  K

) `3 h1 h7 a. {1 r7 }9 w我的qt程序如下:
8 j5 L) ^- u0 k9 [6 \3 k   struct termios setting;' j9 @/ b6 O; R, ?& H, n
    fd = open("/dev/ttyS1", O_RDWR);
. [. ?/ y' D7 ]5 l9 |! B5 j    if (fd == -1) {
% ?: I* o' T9 a: d' R        LOG_INFO("open /dev/ttyS  failure ...");
- n. _" I, O9 j/ e        return ;
: P7 L1 ?8 Z  A* e6 u8 F3 h2 ?+ Y    }- a) I  ^- H+ Y* P
    LOG_INFO("open /dev/ttyS1  success ...");
, o* v9 f; s/ s6 N    tcgetattr(fd, &setting);' {  p# x7 s  \" u$ J) S' O
    speed_t speed;
; X; ?( D+ l. k    speed = btr;
) G  Y9 r/ K7 Q% I7 Y
* i0 u/ x$ d" E8 ^5 k3 ?    cfsetispeed(&setting, speed);1 ^4 [* K  g/ A! x  L
    cfsetospeed(&setting, speed);9 t6 @$ ~, B* v1 \
    cfmakeraw(&setting);
2 H! v& h3 }! m0 r1 o6 K: E    setting .c_cflag |= CS8;
* c& G" Z9 n) n' M) a8 _. j, \    setting.c_cflag &= ~PARENB;$ h. F$ X% F# S' @$ o
    setting.c_iflag &= ~INPCK;7 y( p+ C, [) ?! w
    setting.c_cflag &= ~CSTOPB;* j8 o: t' }  d, ?6 f
    tcflush(fd, TCIFLUSH);
1 M' S2 ?: t0 D5 q: W' T    setting.c_cc[VTIME] = 0;
/ w0 g' v) T3 R$ b# J. d- R0 ~    setting.c_cc[VMIN] = 0;" `, b4 e, ^0 j) ^$ x: M
    tcsetattr(fd, TCSANOW, &setting);
" ^: {5 ^+ X3 ]6 G1 O( K* x, W4 M5 y3 ~" O
    int ret;3 x3 w" E' {/ U, _6 @8 r& {4 g
    char *buff = {"hello,485write ok"} ;0 Z2 y+ M9 _' K2 ~0 c
    ret = write(fd, buff, 17);
0 }! L5 q8 s3 [( ]' z7 T* K; J# k6 s
    char buff1[256] ;
& S. P, A% D. T8 P3 u$ z    while(1){
9 g# s! g) l1 N) B1 D4 p/ A# g* y6 ^' _* u2 D5 s, e
          ret = read(fd, buff1, 255);7 |7 J  i( ?* G
          if(ret > 0){* j+ X) o4 ^* m

* D# v' a! f+ [  a                     write(fd, buff1, 5);0 z2 N1 m+ h6 b; J
2 P1 f% G  q* v! J2 `
                      LOG_INFO("rs485 receiver ret = %d " , ret);
; d$ W2 u- X# W  ?4 q! c
. a& y4 }7 M1 K+ {/ p9 H          }
9 e" D2 ^# O8 y- V1 S; G
0 r* J! `9 g6 i( _    }
7 V9 H1 N4 H# z/ O4 P/ E5 B& {) ^& r$ H" L+ I
   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
9 a$ u% V9 V, e3 c! K, h8 \# I5 Q

+ [: `. h  W( }6 |0 S& `: q* |

) S8 f3 V: ^3 w2 }) `
$ m& x' u$ v+ w
作者: tenny    时间: 2016-10-8 13:21
串口助手发够255个字节了吗?




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