|
, F8 Z% r! W& R6 O+ B1 N# B$ s+ o您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
$ |, l" N% z: @3 A( J
$ r$ K. e" g. I. M; N" h我的qt程序如下:( @5 y5 B4 \; c) B3 {4 M
struct termios setting;
* v& s% v! i+ W" L4 T7 A# g% Q fd = open("/dev/ttyS1", O_RDWR);
6 X2 a `% @- H$ M% ?# u if (fd == -1) {
! Q; @% _( |. B3 e% H LOG_INFO("open /dev/ttyS failure ...");
7 ~% t" a* p, k* U5 M" h' k) n return ;
0 Z' q& }! l" { }
. H% Z, N# [; T. D- |! | LOG_INFO("open /dev/ttyS1 success ...");
3 v' { ]2 d+ ]9 i tcgetattr(fd, &setting);
! ?! c( Z$ T; F% S- I+ K0 b1 _ speed_t speed;
& Q! i6 Y6 s0 D8 Y" L8 ?% { speed = btr;" s9 R# P$ d. e% D" p
) k: G+ O8 B2 V4 \
cfsetispeed(&setting, speed);/ k* P# M8 q& [9 D* l* i
cfsetospeed(&setting, speed);
6 s1 h! m- T& k3 d, ] cfmakeraw(&setting);4 q) I- I& e! k# K, |
setting .c_cflag |= CS8;. _) [3 H4 [* w( a; b
setting.c_cflag &= ~PARENB;
) \2 B$ J: F, ?) Z& v setting.c_iflag &= ~INPCK;
- T5 u) c- H- p1 a2 `) } setting.c_cflag &= ~CSTOPB;
3 p* O1 c& W) T9 J1 X& c9 h3 b tcflush(fd, TCIFLUSH);
- g7 L+ U5 U: p" u setting.c_cc[VTIME] = 0;2 [+ z; k; ~* C z4 ?. } [4 `) a
setting.c_cc[VMIN] = 0;# p2 q0 K& d9 i# i, i
tcsetattr(fd, TCSANOW, &setting);
' _) ~; e, G; ^# I. r& I
4 u1 k( F# _. U' W8 K int ret;
/ F% ~4 [! ~% y+ R+ ?: |% t3 F9 \ char *buff = {"hello,485write ok"} ;
3 U/ L, s3 I) v! ^' h4 V ret = write(fd, buff, 17);4 i7 D/ o' O; I3 P# h
& ~! z7 f4 M" n7 x: b; J char buff1[256] ;
4 Z! |: R% X# v) D+ C8 `1 X while(1){ H8 e9 D0 d8 F3 d, d
; g1 u' @& Z3 W* J7 l; D& c ret = read(fd, buff1, 255);5 D0 \0 Q8 _' R9 e. h
if(ret > 0){
9 Y1 A& T2 _. b1 T/ |
& m; y, o2 i; j9 [- P write(fd, buff1, 5);8 O6 Q. }: b, G
! z4 p6 w" U5 d, W$ {9 { LOG_INFO("rs485 receiver ret = %d " , ret);
& ^' K& f ?% H5 c: g. d5 }4 ?, C1 A) O
}
8 X$ |9 V- f( z7 C- |, ~+ J) u
: o6 Y# Y' q5 y }& G) x9 h% l* w5 o2 Z, J
" ?7 k* A1 B1 }+ c+ S, z; r
我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
) }) x* R# t; s$ j2 ^3 b0 v) S0 m* ^$ [
$ i1 l* w, e, e# D/ Q' _
& [5 k% k B+ @! Y$ A |
|