嵌入式开发者社区
标题:
RS485问题
[打印本页]
作者:
vtinf
时间:
2016-10-8 12:44
标题:
RS485问题
$ c' s' v% y/ @3 h; V0 T" \# O* U4 g
您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现
开发板485口能发数据,但是不能接收数据。
5 m/ Z; [2 {# N2 Q
% Z' [& P- D% {; U+ e0 l# x/ J
我的qt程序如下:
9 E+ U; ?7 b$ q
struct termios setting;
8 W- B2 D" M u2 L/ f, Z
fd = open("/dev/ttyS1", O_RDWR);
% B$ F2 n0 {% F; `. V: h+ a* @
if (fd == -1) {
. S! R9 A, C! o5 l
LOG_INFO("open /dev/ttyS failure ...");
2 o$ c. h; J4 }/ P
return ;
4 k# R0 D6 Z% j9 Y) G+ O2 R& _! E
}
1 N4 e) A2 g6 V1 @8 j
LOG_INFO("open /dev/ttyS1 success ...");
2 g0 {& h& U% P& @: `: F
tcgetattr(fd, &setting);
+ N# L8 s& i, k2 g4 \( O( s0 O5 I' n
speed_t speed;
8 y) w; c b6 L, d% R/ `
speed = btr;
+ ]. R: f, j9 D+ D0 n! O+ Z
4 Y1 b4 g# j& {: w+ H
cfsetispeed(&setting, speed);
& T* s& J7 T+ @7 B
cfsetospeed(&setting, speed);
" ^: c7 O4 i) u. n
cfmakeraw(&setting);
. }0 v6 \" X( V
setting .c_cflag |= CS8;
7 s: w0 I( h3 B" L0 [
setting.c_cflag &= ~PARENB;
' ~! [+ Z* n4 }
setting.c_iflag &= ~INPCK;
2 \; S! g4 D" k2 |
setting.c_cflag &= ~CSTOPB;
2 B2 v6 s! n7 i2 z5 W1 B$ L# g
tcflush(fd, TCIFLUSH);
/ |: Q F: U1 f) s' f9 [" M0 e
setting.c_cc[VTIME] = 0;
8 h( V* _7 L8 j3 C6 t% Q/ R
setting.c_cc[VMIN] = 0;
k8 m% `( K+ }6 i; c8 H
tcsetattr(fd, TCSANOW, &setting);
. `7 P* k- @: M9 U6 X2 d
( ^8 \* H0 Q$ h7 b4 B2 {
int ret;
8 X. @) Y. f! Y( t3 m
char *buff = {"hello,485write ok"} ;
, g( B0 t3 a8 ]- b7 |
ret = write(fd, buff, 17);
( T4 c! I8 W s; u$ }7 @
' T+ M u: u/ p7 ?) l
char buff1[256] ;
7 Z" J" Q. J. z+ Y) k! m6 S
while(1){
5 S0 P$ G" B8 e
2 c8 Y1 s3 v4 r" S6 ^
ret = read(fd, buff1, 255);
& k* n- a7 g; V! Q
if(ret > 0){
( Q( ]# P) w+ v! g' s5 Y
/ C Y# r- M# v/ W3 L
write(fd, buff1, 5);
0 T) F; f9 O2 n3 K+ \, r) e
! R2 B& N# N5 Z/ o" A
LOG_INFO("rs485 receiver ret = %d " , ret);
# L) u4 B0 i) _! s4 c, ^
! ?' C' o, t( [+ g) I. Y% m
}
" {" E0 w% l2 v$ M$ D1 r/ y$ g
2 R( c& X; x$ z! ~; b+ `: R6 o3 P
}
( I" Q3 I; t/ E' |" x. q9 T6 D
2 u' L/ F, I0 B) H
我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
/ D) ~/ V4 |6 q
4 o X, B6 T) o, ^) K& W
" I3 L9 E d( \- y/ u. Z! w! z
/ r* [2 A" z$ m4 I g) X9 J6 I
作者:
tenny
时间:
2016-10-8 13:21
串口助手发够255个字节了吗?
欢迎光临 嵌入式开发者社区 (https://51dsp.net/)
Powered by Discuz! X3.4