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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

RS485问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

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

# r. q  s) M( C' N您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。6 x. Z9 W0 u( [

0 V5 \7 l7 p' M! J7 ^9 B- D# D我的qt程序如下:
3 p" d9 l4 A# z   struct termios setting;
8 g# ]6 O* X$ t3 D" L    fd = open("/dev/ttyS1", O_RDWR);
" }/ y$ X! O8 u1 S- o    if (fd == -1) {
  c1 V1 @. W4 z) N/ c! D        LOG_INFO("open /dev/ttyS  failure ...");
: p, M; _; i) {        return ;
' i' N1 ^, p# W5 @$ \; a    }
. s% b" x5 w/ L$ a8 D9 S( e    LOG_INFO("open /dev/ttyS1  success ...");2 \: N# _. O+ E& i6 Z5 F
    tcgetattr(fd, &setting);
7 _0 Y8 _$ l+ L: C, i' X    speed_t speed;7 K1 y) d5 ^# H; J7 d
    speed = btr;' A6 b7 `' h! y7 j: C5 ^3 X6 `

6 T  d* I- c# R6 S! E3 v    cfsetispeed(&setting, speed);
* a- W9 |0 h# y5 ~5 K5 _! c    cfsetospeed(&setting, speed);; m/ J' V) m# Y  z
    cfmakeraw(&setting);
1 A: [; U5 ], C, m0 w7 w3 i    setting .c_cflag |= CS8;3 U8 L/ a0 e8 E: r7 E
    setting.c_cflag &= ~PARENB;2 q1 H& e4 f+ H' D
    setting.c_iflag &= ~INPCK;
3 A% \7 Q: R) t$ h% J1 T    setting.c_cflag &= ~CSTOPB;, ~  W* [( ^: X0 d3 M0 W; c
    tcflush(fd, TCIFLUSH);
  ^" ^& I" [4 |+ H" U# X! R4 }    setting.c_cc[VTIME] = 0;
* w5 Z+ P2 ]7 k# H% n    setting.c_cc[VMIN] = 0;+ F& u% ~, J" c7 M/ S& w1 U
    tcsetattr(fd, TCSANOW, &setting);
: y2 K; f/ m+ C. H& H# ^5 K8 b# G
0 _4 w9 Z+ A7 n' n9 e. O, @! g    int ret;% i5 m0 }/ D% Q1 ]
    char *buff = {"hello,485write ok"} ;6 E8 R  B. ]* y( o1 }1 _9 |
    ret = write(fd, buff, 17);4 W7 r- q/ \. u$ {

5 L3 L9 E+ J+ \; D: m0 A    char buff1[256] ;; f( Y# }% J0 X' V: L/ \  w- @
    while(1){1 {  {( X, F+ e: }! b7 `

# C3 q' n+ p: N          ret = read(fd, buff1, 255);3 D& u- @; b3 b
          if(ret > 0){, V5 ?8 l# ~2 B' H, d5 A
+ \0 u: A8 Z/ S( I9 J, y
                     write(fd, buff1, 5);
9 j+ N& z. i; f, ?8 h4 j0 x( ?
/ ~: ?5 x/ K4 p7 E9 Q                      LOG_INFO("rs485 receiver ret = %d " , ret);
4 F: s0 s2 _3 S- ]
+ o; d1 q- E! q  q6 g          }3 P% D( E# @$ M9 K& j4 U
2 |' ~8 v) p  [2 d
    }
4 j" E+ u2 `$ z- I1 _1 S- ?( M: A
   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?$ r4 K# u* B$ [6 R; \' ]
& B9 Z# o/ h  j  x. [
1 Z' F/ H  _$ p6 d
; S* G' N, Q2 u+ {" L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-4 06:59 , Processed in 0.035723 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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