|
|
我的问题是这样的,我这里需要使用OMAPL138连接485设备,想用OMAPL138的DSP端与485设备通信,在DSP端上的程序设置串口1后,发现DSP端发送的数据与接收到的数据不一致,我的串口设置程序如下:
A8 `9 O- {; K4 cvoid UART1INT( )
# ^: O! r" o+ m5 A# ~1 c$ Y* n2 j% ?{; v' ?6 E: Y3 x: s Y( i; I
// 使能 GPIO 模块
$ a g5 G4 b9 ?7 _5 W! `4 v$ G // 对相应外设模块的使能也可以在 BootLoader 中完成- l1 X1 c0 ^$ \3 C3 N. }5 k
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 {6 I0 ]0 w/ G1 Y& D+ ~6 O
// 使能 UART1 模块
; v# s8 u- y( f( g0 _ PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART1, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
$ |2 E, y' h u+ Z* y( y+ H // 使能 UART1 禁用流控
( W' ?. X" k3 S- w8 s4 E# E4 H UARTPinMuxSetup(1, FALSE);# y( h5 [$ u7 H
// RS485 Enable 管脚
' `' g# W% Y0 A RS485PinMuxSetup();
3 w# H/ c% q6 O ) G8 ^& o% D! P* d. ~' c
for(count=0;count<20000000;count++){};& v, D" f9 |5 ^# @
// 配置 UART1 参数$ ~, T% F' a% M: k: W7 c0 ?2 j
// 波特率 9600 数据位 8 停止位 1 无校验位,第四个参数的意思是 产生一个16*参考时钟用于内部发送和接收逻辑(网上看的) 3 H& F$ b8 k2 ?! o8 z
UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);5 Y7 y: E+ [6 ~7 U j U( l
// 使能 UART1
# x4 E- X2 E$ l UARTEnable(SOC_UART_1_REGS);9 t, |4 f5 }( p- d) S" f
% ]2 b0 L6 }5 S, ? // 设置使能管脚为输出状态 GPIO0[12]
: v2 |: j/ F! D, _ GPIODirModeSet(SOC_GPIO_0_REGS, 12, GPIO_DIR_OUTPUT);
, J8 U- g- Z1 A% y) H5 ~' O* C3 I c8 J6 N7 I6 ?
// 使能接收 / 发送 FIFO
$ A+ Z" H$ ?: q& F( ]8 u* m UARTFIFOEnable(SOC_UART_1_REGS); u. c0 r+ H( a9 S3 I
o6 v- T8 M1 N9 k7 m+ M$ _
// 设置 FIFO 级别) q7 P& G( h& D. V# d
UARTFIFOLevelSet(SOC_UART_1_REGS, UART_RX_TRIG_LEVEL_1);# ]8 \$ r& v1 y/ C
# k) j3 S, K6 e' q: N$ _# F // UART 中断初始化/ J4 @; o4 T' r, g
// 使能中断( U: h# {& {3 Y4 `: f% T/ Q9 l
unsigned int intFlags = 0;
4 M$ y# Q1 E+ _0 \+ n intFlags |= (UART_INT_LINE_STAT | \" \/ S. [4 V r3 h# }9 q
UART_INT_RXDATA_CTI);: G( x" `# E( y# _
UARTIntEnable(SOC_UART_1_REGS, intFlags);" |5 c$ m, f6 }! [
}
. q- X/ y/ `* }$ P, [4 H- S K( s( H& p0 a- h4 p/ F
,还有一点是当我注释掉UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16); 这句话的时候,在接收端使用115200波特率的串口助手接收信息,接收到的数据与发送的数据就一致,但是只要加了这话,无论串口的波特率我怎么设置,发送与接收到的数据都不同;我是使用创龙的OMAPL138用户资料中/demo/syslink/resource_sync这个程序改的.8 j5 l7 l6 U) M1 u; `
|
|