RS485问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3921|回复: 1
打印 上一主题 下一主题

RS485问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-10-8 12:44:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

2 @7 I( a) `# _8 I2 I您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。- E3 I1 n# B$ L  k. ], w9 _" t. s

. Z7 N3 d# {5 f我的qt程序如下:
8 s& ]4 A& H- Z" [$ ^1 l   struct termios setting;3 q* d& w) L% T9 v. k
    fd = open("/dev/ttyS1", O_RDWR);
  {0 H0 D% C5 R9 s9 x* s3 F; c    if (fd == -1) {
  J1 h' w& u0 Z; H! c& l5 ~( f, A; B! N        LOG_INFO("open /dev/ttyS  failure ...");8 A! y( n5 ~5 Y4 X. N
        return ;0 e/ l; G  W" i/ T+ B0 R1 I
    }
* n1 t2 @2 H. F2 Z; s    LOG_INFO("open /dev/ttyS1  success ...");" ]4 n; h, T$ x: Y6 x( Z- }2 @1 \/ E
    tcgetattr(fd, &setting);
& R, O1 `6 r6 u    speed_t speed;
0 q+ G* h$ K1 J( O8 r    speed = btr;
( ]4 K; P, y4 s5 p* d
. c- V0 k$ J, W3 c    cfsetispeed(&setting, speed);3 ]9 [" B" v7 M% U0 L: D& G7 v9 }
    cfsetospeed(&setting, speed);0 R) k' e3 N' V
    cfmakeraw(&setting);
( ?" W& K1 a$ d- m, H% Y    setting .c_cflag |= CS8;
, D! L* O. w: ?# _    setting.c_cflag &= ~PARENB;1 u  R9 N( e$ k& P* R. ]
    setting.c_iflag &= ~INPCK;
6 k& ]9 q0 m/ G8 S- q7 K+ A* [    setting.c_cflag &= ~CSTOPB;
# _* i) N9 o2 I, _" `$ Q" z    tcflush(fd, TCIFLUSH);
( R( t4 N. ^0 g3 k    setting.c_cc[VTIME] = 0;
/ E& M% a% ]( A* P. [' R+ i    setting.c_cc[VMIN] = 0;
9 e$ g9 m3 v0 `! _2 S    tcsetattr(fd, TCSANOW, &setting);* h6 a2 N. S8 E0 G. [1 m

' o* O( l; m& f* F3 L; J4 [    int ret;
* ^  U. c6 |5 j, ^  _  l) s    char *buff = {"hello,485write ok"} ;
' g+ q) a) X: s1 @* _  g/ Q    ret = write(fd, buff, 17);
9 H; N  }8 Z8 t5 P
  f8 a1 p: Z+ s; T" s% [: s% K2 Z    char buff1[256] ;5 w0 C2 K& Q" z+ m# L/ ~  n
    while(1){
; l( _3 h, p) @0 i' k4 k5 c  e; m
          ret = read(fd, buff1, 255);
+ y" L8 W6 ]5 U          if(ret > 0){! u7 F/ d* ?& ]+ R

! F) R( ~% ]& z: l                     write(fd, buff1, 5);
$ E4 _" x: T; {' Z; [. k1 v& i+ R/ Y  M" z+ \4 Y8 v
                      LOG_INFO("rs485 receiver ret = %d " , ret);
. m/ I- A9 l$ }  G  D; `) p% C) a; F( V
          }
. [, U, K1 [6 \8 t3 ]  ~
& d- ^: @% [; c2 b: H    }
: f) ^% [5 O, @7 C
0 e. y/ Y  D) g  X: V   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
7 W" T4 z- L% p6 w; c
7 p3 W) C6 a, k: N7 @" u

5 B3 c$ i' ^6 e. t2 p3 P: @3 x
8 K# Y! w% F) @' A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2016-10-8 13:21:40 | 只看该作者
串口助手发够255个字节了吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

点击跳转“创龙科技服务通”

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2026-1-15 22:11 , Processed in 0.037983 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表