|
- t8 }$ W( [; D& b- D您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
8 v; w2 N6 q" S" t4 |# D: z7 R
1 s% l$ @8 x" @* @我的qt程序如下:
7 y5 q2 d Z, E! y7 n struct termios setting;
& H3 E R, e4 `: Z fd = open("/dev/ttyS1", O_RDWR);4 {& d* k, t! E. K9 k" h' o
if (fd == -1) {
# l* c0 T. S8 R$ W$ ^4 \% X# b- _# S LOG_INFO("open /dev/ttyS failure ...");
, A, p* J) h0 X8 D* M return ;
* L1 z# P' Z/ G% l+ |$ Y }% a' A/ h8 d* D2 k0 M% x- G5 q9 o* o2 o
LOG_INFO("open /dev/ttyS1 success ...");
; G$ U) V H2 _0 t6 Q tcgetattr(fd, &setting);
: _% q# U/ K0 m' E- H5 e speed_t speed;* B$ S4 ]/ ~) _3 `% w6 m- r" h) q
speed = btr;
+ n' ]7 r! W4 W. C$ | C) \3 ^
6 g/ ^# l$ T3 D; c3 o* S& p cfsetispeed(&setting, speed);
! W6 {$ B: i% `$ G, s' I cfsetospeed(&setting, speed);
! J+ @% @) } s- {0 p' D2 [. \; O cfmakeraw(&setting);. d8 s+ U; s5 f
setting .c_cflag |= CS8; h/ c& T8 i6 b: a |$ r$ ^) O' O2 g
setting.c_cflag &= ~PARENB;
" j- j1 |. C9 d setting.c_iflag &= ~INPCK;
) @/ C) S4 L* r) E8 Y setting.c_cflag &= ~CSTOPB;8 d0 |, z7 [% l* T$ g% v
tcflush(fd, TCIFLUSH);3 d2 T! |" q$ i. L: m
setting.c_cc[VTIME] = 0;
/ B0 \" ?. i( p; }# W8 U& u setting.c_cc[VMIN] = 0;
+ e, d% ?4 Y; w: v5 D0 H& t# i! \ tcsetattr(fd, TCSANOW, &setting);( A- \1 o; F6 E8 {
* f# p1 x4 M2 U: V
int ret;
C, T! `1 P1 a5 r# L char *buff = {"hello,485write ok"} ;
8 W5 m1 J( g- j) C" s+ U- _2 S ret = write(fd, buff, 17);5 l1 j- ~, y# K: m' {8 G& {, { C
1 Y' o5 @( y. z- r- O* {1 N3 _
char buff1[256] ;
8 {. y; K" M2 C7 a* V/ U( ~ while(1){" s: _( s- o& f, E- y! _3 E4 k
/ k% x# w! R4 |- q- X- w
ret = read(fd, buff1, 255);' i; k2 f* ~2 C$ z7 b1 g3 k7 i
if(ret > 0){
3 V7 d' M# D" N+ S4 J' s Y5 m, o
: f3 G5 D# d% f1 T; Z$ ^! Q/ W, R7 P write(fd, buff1, 5);5 `4 q, }" R) \' W( {; h
4 |: ^$ u# r8 [! J. {- z9 j LOG_INFO("rs485 receiver ret = %d " , ret);& e6 ]0 v& k8 ~4 R1 P8 n# }! X5 x
t5 g* G6 Y2 ~- ~' E+ N
}" T3 ~; _1 Y. o: S5 k Z4 E
' l8 \) H4 R: Q6 `2 P- N }
/ m8 t4 T) Y& ?' u0 X. f3 t
7 Z: t8 Y' G0 ~; q- x 我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
( w* B& j( C9 P) [3 x. g3 n
|/ A% |4 V( |9 r) ]2 V, Y
. u9 H* s# C4 v. A6 ?: k U! y) i1 I: |- N% w
|
|