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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

RS485问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-10-8 12:44:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
- B7 R* i( [' W2 y# O/ `
您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。0 q* [; q6 ~# I" Y. u' p
2 ~. V" d+ J8 Y0 Z' _8 v; b
我的qt程序如下:
( D( F  B5 R7 e1 M4 h   struct termios setting;
8 |) A1 l8 }; }2 N7 g    fd = open("/dev/ttyS1", O_RDWR);% n7 i/ c( h( x2 v+ H. z* r" [
    if (fd == -1) {
3 E1 @2 {+ T3 ?7 ~: L9 {. ^  s, `( i        LOG_INFO("open /dev/ttyS  failure ...");% U6 E. W2 }7 H. Q5 E
        return ;1 w# O5 ~& R1 A* I+ A: [9 G
    }
- l2 B5 w5 k9 [% \/ p9 i+ W+ x    LOG_INFO("open /dev/ttyS1  success ...");
& ?: O' ^2 J$ U) x0 x4 f    tcgetattr(fd, &setting);8 B4 k* F) F2 z4 w$ k7 ?6 k1 N% u
    speed_t speed;
% p2 o. `2 M9 L/ v    speed = btr;0 L5 Q. J# Q. ^% o" q

1 E" T! h. x- |& `    cfsetispeed(&setting, speed);
& r: |0 b9 J) l    cfsetospeed(&setting, speed);
% J, U( i- e4 [- _( _0 }1 j    cfmakeraw(&setting);) A: v3 K& d. l: F% {
    setting .c_cflag |= CS8;
; C8 q. ^6 M) `; t! f: m& V$ P    setting.c_cflag &= ~PARENB;
/ m, X! c$ Q5 v    setting.c_iflag &= ~INPCK;
; G0 y- v$ M7 C% y# j    setting.c_cflag &= ~CSTOPB;% }9 u. J: v7 n1 }# A5 G: ^
    tcflush(fd, TCIFLUSH);' F: j6 D/ D9 q. S  S
    setting.c_cc[VTIME] = 0;" m+ V1 Q) i9 p- b, C1 T
    setting.c_cc[VMIN] = 0;
( V  g/ |  H% i" w/ ~    tcsetattr(fd, TCSANOW, &setting);
: _" S: y+ M! ?. m2 O0 M$ W0 |( z5 P. N0 Z' t8 G$ m0 D
    int ret;, U& C& |; S- f1 l  }
    char *buff = {"hello,485write ok"} ;
' I- d5 A' L, o1 n/ s- e6 z    ret = write(fd, buff, 17);7 p1 x( D5 }, I% d4 X* ~
6 \6 Z2 q. O% Q) r3 o' n9 q4 o
    char buff1[256] ;
' m% {" k! A5 y    while(1){
! L: n) @3 {% q3 T+ D+ P
/ c6 v& j( s. C) a1 ~          ret = read(fd, buff1, 255);
9 A1 \& V# F0 ^2 S% x5 I) s7 S          if(ret > 0){8 k: L( S# A1 `+ G; \6 h: J7 L0 u" F8 ^

$ U7 D+ B  l/ @0 h                     write(fd, buff1, 5);* m' M. s$ [1 t8 `0 ?2 m

' N/ p  I- L4 O) @  P                      LOG_INFO("rs485 receiver ret = %d " , ret);
$ a# N; b9 T% A
# L3 y1 ^" f- w1 G8 b. V: L          }
" i; T: M) B; F0 E2 {# R: y
1 B- _9 ~0 J% q3 [) p    }
$ M- {. C! m7 n' O5 B  D% s8 _2 f. r4 h* R4 ?$ y8 s
   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
) F+ ~+ c' x* B& E/ W4 Q* A
, h7 w6 A! W2 ~; H

7 [7 T  e8 l- E0 k1 B
, r  w! N9 `, v' R3 z2 U7 J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 14:39 , Processed in 0.044344 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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