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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

RS485问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-10-8 12:44:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
% k7 A1 f0 A4 t& ^8 d
您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。& |$ e& t% F" u* c1 A  {

) _% {& w9 Y$ A7 `& p1 A3 j3 _) t我的qt程序如下:
2 K0 H2 e- |" _& X1 e   struct termios setting;4 @8 h7 o5 i' R/ G7 N- c0 M
    fd = open("/dev/ttyS1", O_RDWR);
. R8 N: T" j' `; e" ]7 e( U    if (fd == -1) {
4 y9 {* |/ j! h" m. u6 W        LOG_INFO("open /dev/ttyS  failure ...");
$ W% A7 e' s9 n        return ;1 a- L5 e  l+ N
    }9 E8 R6 h* m3 @/ x$ {, p
    LOG_INFO("open /dev/ttyS1  success ...");
) L% Q" x3 Y1 i8 \$ h/ h8 K# q    tcgetattr(fd, &setting);
. p9 Q6 Z7 b1 L2 d3 C% \    speed_t speed;8 D' }0 d2 H2 H+ }3 b0 W
    speed = btr;2 [- T/ i) T8 o7 n, H

5 {2 g/ O" ?0 ]) \    cfsetispeed(&setting, speed);3 Q7 {9 Q$ x+ m# _4 L
    cfsetospeed(&setting, speed);. T; F0 i) p$ m+ G
    cfmakeraw(&setting);
- t$ V& [4 y* i  h6 L1 u) w    setting .c_cflag |= CS8;3 U& J) r; A: d: r6 I$ x
    setting.c_cflag &= ~PARENB;- B4 T$ n/ x% \8 c. |# @
    setting.c_iflag &= ~INPCK;
1 @' z+ n  j( x5 ^7 ~    setting.c_cflag &= ~CSTOPB;- w0 ?' j9 h2 e7 l0 F, w3 e4 f
    tcflush(fd, TCIFLUSH);
, Q! h; H9 m. r( H* l$ g; U4 c  d0 {    setting.c_cc[VTIME] = 0;6 x2 a5 h! j7 f& ]" y/ y2 ?
    setting.c_cc[VMIN] = 0;
# Y* u! l# w$ Q8 w    tcsetattr(fd, TCSANOW, &setting);5 j. w9 ?/ ~/ _" {0 P
! z: s% O- q6 U+ ~+ g7 _2 m2 X  \
    int ret;
. X/ O# a2 A( C; m7 V% c    char *buff = {"hello,485write ok"} ;
3 i8 ]9 Y" j4 a9 c' ]    ret = write(fd, buff, 17);+ Z: r9 _# j+ a3 |6 F2 k% B, [

, v/ Q& [5 d0 c7 X$ L8 D    char buff1[256] ;" s- ]* t* K# T
    while(1){
' z2 o0 ^- _% O% k+ ^0 y9 C) S# E$ {5 \1 i
          ret = read(fd, buff1, 255);9 s  l& y3 Z6 H' Q
          if(ret > 0){
: J4 V7 |) o, F6 J: k2 a
/ e1 X& i. @. d3 j. Z' d                     write(fd, buff1, 5);; G, Y% a+ ?; X! l3 f
) A% N2 p5 u1 J( ^/ q
                      LOG_INFO("rs485 receiver ret = %d " , ret);
. ]& b8 G) x* q  ^
4 T: F" c( M# L6 c' F" n          }
' s+ A7 g6 P1 W. H
7 r+ ^; G+ y( d    }1 }& [  n( C, g7 O1 w9 c) r
. L) f* K) P5 N
   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
' L, {. O' k9 i- L
0 `) E" f' n% }& e6 k

* g1 q4 V  l6 M9 V; A$ M8 ^4 J! ]( X; j8 `5 g5 n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-16 09:35 , Processed in 0.036825 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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