嵌入式开发者社区
标题:
OMAPL138中在DSP端程序设置串口1,数据收发不一致;
[打印本页]
作者:
wahha
时间:
2019-11-27 17:36
标题:
OMAPL138中在DSP端程序设置串口1,数据收发不一致;
我的问题是这样的,我这里需要使用OMAPL138连接485设备,想用OMAPL138的DSP端与485设备通信,在DSP端上的程序设置串口1后,发现DSP端发送的数据与接收到的数据不一致,我的串口设置程序如下:
5 k/ d; C3 B4 A- A
void UART1INT( )
$ ^9 K0 p- Q+ m" a9 g( n
{
- X9 I0 W8 m5 O; e
// 使能 GPIO 模块
5 U0 ~* Q8 G; ~( w4 u m! |
// 对相应外设模块的使能也可以在 BootLoader 中完成
$ F6 g: I% L- s7 u
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
" v% z4 F6 @5 p6 K
// 使能 UART1 模块
7 s, b. ^, j( w- ?# Z/ {
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART1, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
! F9 I3 y# n$ F5 C# Q" s) G
// 使能 UART1 禁用流控
3 N3 @6 Z0 X3 @* U) E
UARTPinMuxSetup(1, FALSE);
4 v( F7 ^# |# Q8 C$ P8 x) l& _0 m# d
// RS485 Enable 管脚
% c/ z4 C9 I7 m* r% F8 ~
RS485PinMuxSetup();
8 P# r7 d; a; L- y
; j; S' J/ o5 D- x
for(count=0;count<20000000;count++){};
7 c( C3 W2 ?& ^( z7 u3 G/ }# n
// 配置 UART1 参数
: s0 J! z% ~3 Q% _; c& H
// 波特率 9600 数据位 8 停止位 1 无校验位,第四个参数的意思是 产生一个16*参考时钟用于内部发送和接收逻辑(网上看的)
8 L$ X8 N- [* P5 I; | p& ~
UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
9 p8 |9 B' x* Q' V' z% P! z5 _9 H
// 使能 UART1
' T( l1 i1 y' y1 R& N w6 R
UARTEnable(SOC_UART_1_REGS);
. h5 o; A' R- e
8 M; Y. e: }8 q. i- r
// 设置使能管脚为输出状态 GPIO0[12]
5 L, Y) o9 c B# M$ Z. A2 V* V H
GPIODirModeSet(SOC_GPIO_0_REGS, 12, GPIO_DIR_OUTPUT);
/ G+ `9 I5 W9 X# H* ]
, F/ t" K; C" \# i: V# w1 f
// 使能接收 / 发送 FIFO
Q' C: M# [4 o+ h
UARTFIFOEnable(SOC_UART_1_REGS);
; f! i% k7 Y/ R6 [
* i4 M" v1 K! ?. f" v
// 设置 FIFO 级别
2 \: Y! |8 ~9 R, W- v
UARTFIFOLevelSet(SOC_UART_1_REGS, UART_RX_TRIG_LEVEL_1);
3 `1 n' E2 K5 k* z
- K! O% }' \0 V+ {1 z
// UART 中断初始化
9 s; g% \. F* \' Y+ `1 n& ~# y2 q% g
// 使能中断
' H" H( J! K; j
unsigned int intFlags = 0;
7 Z: q6 k" `1 v7 M
intFlags |= (UART_INT_LINE_STAT | \
1 _4 X7 A/ e) a5 {( q
UART_INT_RXDATA_CTI);
- L/ ?) ]7 w0 C, }/ u+ t
UARTIntEnable(SOC_UART_1_REGS, intFlags);
$ Q, A/ a" p9 b; K( ]8 w# X5 c/ v
}
' F- J8 m$ Q$ Q& N' {) Q1 Y
4 t0 p: W: }1 \$ Y G
,还有一点是当我注释掉UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16); 这句话的时候,在接收端使用115200波特率的串口助手接收信息,接收到的数据与发送的数据就一致,但是只要加了这话,无论串口的波特率我怎么设置,发送与接收到的数据都不同;我是使用创龙的OMAPL138用户资料中/demo/syslink/resource_sync这个程序改的.
6 A/ J% i$ Z# n2 ]( y
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4