|
1 G. L5 I, e, `5 ~% ^% R
您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
0 t2 }6 R* B" F4 ~% ~. K0 @6 m/ {5 V T
我的qt程序如下: V) i0 { a% _) L: U
struct termios setting;. U( |2 R; q5 c/ C, h/ n- {
fd = open("/dev/ttyS1", O_RDWR);- ?- Z. C1 t9 [0 e l: H/ R, w2 C
if (fd == -1) {% b, w8 e8 `) J" [/ X! K( l
LOG_INFO("open /dev/ttyS failure ...");
9 l* |5 v' w8 }* V) {3 i return ;
, `3 C/ J8 u5 ^4 u. V2 C$ \ }* [1 ~4 y3 ~2 d
LOG_INFO("open /dev/ttyS1 success ...");
9 U6 e4 n+ b5 |/ P# t tcgetattr(fd, &setting);/ z. v3 D+ O8 E9 s5 ?, g
speed_t speed;
2 _1 y) G) v6 M( u% ]) R( N speed = btr;
' d# i |* D: i7 o' x+ W+ y: e
) m/ J" U e9 K; @& h K! \$ E% h cfsetispeed(&setting, speed);
- Z4 f1 W/ }# _3 U/ p1 j cfsetospeed(&setting, speed);
0 P& d1 n& M! F- r cfmakeraw(&setting);, E; @; g8 {! a+ k/ f2 \( U a
setting .c_cflag |= CS8;- W( X+ p( j1 g, ~4 {
setting.c_cflag &= ~PARENB;, d5 e7 F) b( Z \8 S, a5 g* `0 ?5 s
setting.c_iflag &= ~INPCK;8 B+ f# I2 P4 a% \
setting.c_cflag &= ~CSTOPB;- @: i1 a3 }( W8 Q$ P
tcflush(fd, TCIFLUSH);
* M* `0 f2 d$ F# P" g( b setting.c_cc[VTIME] = 0;! X2 N% G0 z5 e+ ?
setting.c_cc[VMIN] = 0;$ G2 D5 { l, m9 v9 _6 _- Z+ g$ h
tcsetattr(fd, TCSANOW, &setting);6 m$ d+ W8 Z4 ]5 g1 U9 y4 g
8 i! m$ u( X! n3 x r2 ` int ret;
, r2 e: H7 D* Z5 c' ? char *buff = {"hello,485write ok"} ;
4 @( }' W" n/ B6 \' \# e ret = write(fd, buff, 17);
% P3 o9 {6 s) Z! B2 C
# }1 q4 m7 P$ h0 @ char buff1[256] ;
3 ~* Y* [# s5 E \, o l* i2 d while(1){
' O1 t3 ~) u5 E! {; s8 L9 l$ B0 H' Z4 y: f! O' @7 f
ret = read(fd, buff1, 255);
0 D9 B9 x' y( M; L* T$ U$ Y if(ret > 0){
! W3 X$ M; p$ f/ U5 Q' i2 ~
% j. E, ]! l. p% [/ {6 ^ write(fd, buff1, 5);# Q" t, f! F9 e& K( q
8 f1 N+ J! L0 [- E" _5 r LOG_INFO("rs485 receiver ret = %d " , ret);8 O+ r8 W& M3 O
* S L: U; ]/ [5 {8 a5 Z. f1 ] }
! b F1 A& S z/ {/ b# k% B/ n7 h; [& e3 x- B, s
}1 ^8 k. M- `7 `' \
% K- |9 h7 X1 v' \. r% k5 D 我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
6 `1 L9 m* ~# d4 r8 l9 u
( m) A, K! H9 b$ a- y+ O5 Y8 T1 M3 o6 C- X' @, i/ o( ?- A
9 y" Z t8 a' b% H. v2 D |
|