|
我的问题是这样的,我这里需要使用OMAPL138连接485设备,想用OMAPL138的DSP端与485设备通信,在DSP端上的程序设置串口1后,发现DSP端发送的数据与接收到的数据不一致,我的串口设置程序如下:
( u/ `( g& X& ^4 h5 u! @void UART1INT( )
3 o0 c- u$ ^8 k: ~- b' Z{' l% ], i" _" j+ ]. ?
// 使能 GPIO 模块& S3 s, m* v6 {( x. U" H6 x3 e
// 对相应外设模块的使能也可以在 BootLoader 中完成1 _) u% R' L. h P' e& S
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& H! ]& V s" x- v, I: R( r! a. D
// 使能 UART1 模块0 S- U& M$ n7 K% M; ^; i h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART1, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
8 a, g) ^8 `4 x; m // 使能 UART1 禁用流控$ N/ x! j1 U( ]) `( H% ]7 E2 t
UARTPinMuxSetup(1, FALSE);: E. h) {" S9 r
// RS485 Enable 管脚
) H1 \& J( f4 w% n# U7 U6 M' d RS485PinMuxSetup();
1 L9 M+ v; h' ^; a' H 4 E7 S ]9 \0 _9 t( C5 J8 \* x7 N3 a
for(count=0;count<20000000;count++){};6 V/ j/ I& L+ g* Y
// 配置 UART1 参数& j5 s9 S* T' s0 U% o9 e
// 波特率 9600 数据位 8 停止位 1 无校验位,第四个参数的意思是 产生一个16*参考时钟用于内部发送和接收逻辑(网上看的) 6 |3 T" P \, `% J
UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);
6 a) b: V% A) c! G8 @% z // 使能 UART1, _$ m" S( N& W# |
UARTEnable(SOC_UART_1_REGS);
+ Z) c& j. ?: k& A+ [* z! `$ v5 i X# \8 x: H6 S
// 设置使能管脚为输出状态 GPIO0[12]
5 k0 W, d8 u2 T! n% ]: T4 O1 X+ ] GPIODirModeSet(SOC_GPIO_0_REGS, 12, GPIO_DIR_OUTPUT);: ^/ i+ B% }2 j# A: k+ s
' Q- o' \1 N9 B2 O5 w
// 使能接收 / 发送 FIFO
2 i5 Y V; ~3 H4 t UARTFIFOEnable(SOC_UART_1_REGS);
$ y- z0 M* {% d0 X( M* p% {& V g5 {$ L
// 设置 FIFO 级别( G. D2 M% F3 g5 r0 A Q H
UARTFIFOLevelSet(SOC_UART_1_REGS, UART_RX_TRIG_LEVEL_1);
" W" r. f2 a# o3 w* m9 ]1 m% w
r Q9 O+ V7 h ?3 ~ // UART 中断初始化
; Y0 l. E- K( f // 使能中断
" }3 X! E2 `& H( U unsigned int intFlags = 0;) l$ Z0 `; H. l7 c
intFlags |= (UART_INT_LINE_STAT | \
2 w% ?8 o/ D) ^ UART_INT_RXDATA_CTI);
5 x; l5 u) ?& H) ] UARTIntEnable(SOC_UART_1_REGS, intFlags);
/ @, u$ b* C2 Z& ]}
3 K" D5 N% ? `9 d' M$ R6 g9 z) n$ {- U; q% [" D
,还有一点是当我注释掉UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16); 这句话的时候,在接收端使用115200波特率的串口助手接收信息,接收到的数据与发送的数据就一致,但是只要加了这话,无论串口的波特率我怎么设置,发送与接收到的数据都不同;我是使用创龙的OMAPL138用户资料中/demo/syslink/resource_sync这个程序改的.( }' A$ }% {5 C( @! V3 B
|
|