RS485问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

RS485问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-10-8 12:44:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
" e7 W# j7 m3 q) ?1 S1 C! z* @. ?# }: Q6 c
您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。% L& ^! z& e4 b$ p. P
1 x5 G/ F$ N) L' S
我的qt程序如下:0 X0 b7 ^( n3 y" Q) `$ m9 b
   struct termios setting;
* V' r. G& k, ?4 ?( I; j7 u    fd = open("/dev/ttyS1", O_RDWR);
1 T& i  q5 c- |    if (fd == -1) {, M% I5 \2 K, v1 f1 ?, A5 N
        LOG_INFO("open /dev/ttyS  failure ...");9 Q1 e- L9 n5 Q5 A5 c& h6 f' H
        return ;2 U5 T  @: {- S0 k$ ^5 ~! `
    }" w1 `$ a5 s  N
    LOG_INFO("open /dev/ttyS1  success ...");
5 x( z2 \3 Y/ u" T    tcgetattr(fd, &setting);7 }2 v8 o2 @; F; M  q) P' Q7 }$ v& \
    speed_t speed;, ~8 h" j: A; w( M" f
    speed = btr;
: D2 V$ W$ @! w/ A3 i
, R2 j7 m& Z1 O% E    cfsetispeed(&setting, speed);; j4 d. |( a5 m) v+ p' Q/ z
    cfsetospeed(&setting, speed);
$ v4 Q0 J1 ^4 H* l$ k$ S    cfmakeraw(&setting);6 I5 \/ x2 k# b0 ]' P
    setting .c_cflag |= CS8;. j2 y6 Q, S4 C0 ~1 R
    setting.c_cflag &= ~PARENB;/ {8 W3 X+ w* @" y
    setting.c_iflag &= ~INPCK;2 j% k/ R: o% n. Q* w+ M- t, L
    setting.c_cflag &= ~CSTOPB;0 `4 R0 b. n( a. G
    tcflush(fd, TCIFLUSH);+ L  a1 P: b: j. K1 p$ P" D
    setting.c_cc[VTIME] = 0;
. H: q8 h) S/ U    setting.c_cc[VMIN] = 0;: ?4 Z' k( u, m7 x
    tcsetattr(fd, TCSANOW, &setting);6 c: v" j4 h; F
2 B' F# p7 C; ]9 c) E! `
    int ret;4 Y$ K+ y/ W( p3 j
    char *buff = {"hello,485write ok"} ;
6 q' m/ M* Q" D/ W# m# q    ret = write(fd, buff, 17);
7 L: J( m! Z; Q* P# f/ s  R! e' L8 r3 p+ f
    char buff1[256] ;
- k1 |! w6 Z" \# }/ r4 C8 \2 v/ w9 N# Y    while(1){2 n8 K& K& t' }7 t& p/ _
: r+ d6 b. y! g4 ^& Z7 d$ a
          ret = read(fd, buff1, 255);2 \1 o$ ?6 \. R$ |1 c/ i
          if(ret > 0){
% Q2 D) \& ?. j9 G
8 d4 B1 Q5 a$ }                     write(fd, buff1, 5);/ h7 X- z) I, R8 x1 X

. z9 y. p5 Y; I, Q3 P/ F  G/ Z                      LOG_INFO("rs485 receiver ret = %d " , ret);- X2 b- V# l( t
8 a' b# h2 a* l0 ~8 w1 D5 ]
          }& d6 ^9 O9 `9 }8 m+ @
  x# Z, l; ~8 R" q
    }' o" O1 z1 Y; U( y

7 T2 y/ i( I  b   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?" e7 w! P& l5 x, G) s

" R0 B# R) {8 h1 r2 _

3 t3 K) w- X& |2 \9 k0 I* |1 z: R0 j/ C/ N% I" b: g( H+ t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 16:03 , Processed in 0.035710 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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