嵌入式开发者社区
标题:
OMAPL138中在DSP端程序设置串口1,数据收发不一致;
[打印本页]
作者:
wahha
时间:
2019-11-27 17:36
标题:
OMAPL138中在DSP端程序设置串口1,数据收发不一致;
我的问题是这样的,我这里需要使用OMAPL138连接485设备,想用OMAPL138的DSP端与485设备通信,在DSP端上的程序设置串口1后,发现DSP端发送的数据与接收到的数据不一致,我的串口设置程序如下:
; H" U# l% K& w* m0 V; L
void UART1INT( )
8 f- X0 N4 T j' B: z: _' W! ]
{
- K) W2 j# j% z2 }& @2 C) [# ]
// 使能 GPIO 模块
/ b- o9 _% e7 r$ D. q
// 对相应外设模块的使能也可以在 BootLoader 中完成
v9 o/ a2 N, A( O0 h: t+ K
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
$ r4 n8 |, A$ x- i! L* F5 Y( t$ o
// 使能 UART1 模块
' e: T( H' l2 o/ Z
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART1, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
& }8 Z$ w, d- w' R7 x5 U
// 使能 UART1 禁用流控
' w. k& \. n# L' q/ d- ? Y/ V
UARTPinMuxSetup(1, FALSE);
1 G, w& j8 t8 F$ a5 J
// RS485 Enable 管脚
$ U! S( x( l/ ^1 B0 p
RS485PinMuxSetup();
" u+ |" x" n0 `
- N3 u" p% o* K1 A
for(count=0;count<20000000;count++){};
" I( n s: B2 h* F
// 配置 UART1 参数
/ L( Y( ^4 a- l4 }5 H
// 波特率 9600 数据位 8 停止位 1 无校验位,第四个参数的意思是 产生一个16*参考时钟用于内部发送和接收逻辑(网上看的)
( M0 T5 O( _* Z+ {: C7 F* u7 i
UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
1 \/ Q4 \# P: D+ m) F7 g
// 使能 UART1
! Z; m+ j2 d. ]- A" J4 y7 K6 }* J
UARTEnable(SOC_UART_1_REGS);
9 I3 h& A( q$ g3 C
3 i; i( c* ?9 [/ f: `1 h& A8 O* ?
// 设置使能管脚为输出状态 GPIO0[12]
, j$ c8 w0 ~' H
GPIODirModeSet(SOC_GPIO_0_REGS, 12, GPIO_DIR_OUTPUT);
! v6 g& r* K) G( p: S, H1 B
5 l- K; L& m. R* F |
// 使能接收 / 发送 FIFO
. [. x' f2 p( [2 W
UARTFIFOEnable(SOC_UART_1_REGS);
3 c0 {* K' O) q$ Q0 I$ E* ^ G P
: c- O/ i4 s- P% F' {8 T2 G; c
// 设置 FIFO 级别
. `: v" ?" O, I
UARTFIFOLevelSet(SOC_UART_1_REGS, UART_RX_TRIG_LEVEL_1);
5 l. f6 d n6 T. T3 S
B: j' l) }4 D4 E% P% Y
// UART 中断初始化
. u* C9 h4 h! u" ~& B2 ^
// 使能中断
4 u* y* K, x/ e4 M7 s+ u; a
unsigned int intFlags = 0;
1 z4 p/ B' n2 Y7 o3 M0 r
intFlags |= (UART_INT_LINE_STAT | \
% n: _, o" d* x4 x" Q& r
UART_INT_RXDATA_CTI);
* W2 u4 k4 U- T1 I4 u
UARTIntEnable(SOC_UART_1_REGS, intFlags);
" h2 |& Y8 S+ @9 ~4 B
}
. m- Q D* |" T% `6 j
! j! r6 d* {/ e# h
,还有一点是当我注释掉UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16); 这句话的时候,在接收端使用115200波特率的串口助手接收信息,接收到的数据与发送的数据就一致,但是只要加了这话,无论串口的波特率我怎么设置,发送与接收到的数据都不同;我是使用创龙的OMAPL138用户资料中/demo/syslink/resource_sync这个程序改的.
3 s" O B: U+ S ^4 c# O
欢迎光临 嵌入式开发者社区 (https://51ele.net/)
Powered by Discuz! X3.4