|
我的问题是这样的,我这里需要使用OMAPL138连接485设备,想用OMAPL138的DSP端与485设备通信,在DSP端上的程序设置串口1后,发现DSP端发送的数据与接收到的数据不一致,我的串口设置程序如下:
* j* e p' H" `: xvoid UART1INT( )) M. e' x4 Y3 T' b
{6 C$ u% x7 |% w4 T4 E* W
// 使能 GPIO 模块% e( A/ G7 x* d; l* | `2 H; |
// 对相应外设模块的使能也可以在 BootLoader 中完成1 {3 q0 @5 o4 u5 U" c1 B: ~1 ?& S
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);9 o+ Q. x$ J& z9 @$ X* {
// 使能 UART1 模块, `& `5 N% w0 c: |$ q
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART1, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);. L' h8 i' c8 o ]& @/ J
// 使能 UART1 禁用流控) Y: T6 j% D2 l3 V8 G: s: C
UARTPinMuxSetup(1, FALSE); A( e% z% w2 F. g( b8 z, R S7 `
// RS485 Enable 管脚
+ O# i3 Q% |3 \) e, _ RS485PinMuxSetup();
4 x$ y' p) }1 t( \6 H
. V9 {: [8 X4 k; F4 k) w5 | for(count=0;count<20000000;count++){};
$ B/ Y) W. k! R2 f0 P& _* o% K // 配置 UART1 参数/ P. T5 P) Z+ C$ J5 P. j6 \9 h
// 波特率 9600 数据位 8 停止位 1 无校验位,第四个参数的意思是 产生一个16*参考时钟用于内部发送和接收逻辑(网上看的)
+ v5 X4 Q# p2 v3 z9 P7 @/ P% a2 B UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);# y( L; s$ d1 l( k' H! i' x4 k
// 使能 UART1
9 E H' O# l9 A* b# l$ h UARTEnable(SOC_UART_1_REGS);* X: y% d3 h- h) I/ `
' X# |6 C3 a# i/ D9 F2 M
// 设置使能管脚为输出状态 GPIO0[12] d" b1 t; c+ j( O+ M
GPIODirModeSet(SOC_GPIO_0_REGS, 12, GPIO_DIR_OUTPUT);
9 I8 h S! b( k/ G5 i) p- q# J
// 使能接收 / 发送 FIFO
* R. b$ h0 c9 a3 ~" l9 U UARTFIFOEnable(SOC_UART_1_REGS);
" v& z7 `* h: f" ?6 M
3 [2 |* \' u6 Q( _2 ? // 设置 FIFO 级别
- L) n4 t7 A6 R) G- o0 Z ^ UARTFIFOLevelSet(SOC_UART_1_REGS, UART_RX_TRIG_LEVEL_1);
' ^% q5 r, a6 f3 B
/ F" y3 B8 g6 S5 L9 c // UART 中断初始化
}+ y- @) _( M# z* e, O4 H: @ // 使能中断
* r; P, Y/ g* K. g unsigned int intFlags = 0;, J6 @; o6 S, U) ~$ [
intFlags |= (UART_INT_LINE_STAT | \
0 x0 c! P" C6 X B" p7 _ UART_INT_RXDATA_CTI);
, K3 I+ b. d1 K# [. C UARTIntEnable(SOC_UART_1_REGS, intFlags);- u6 z% z; v4 S6 J
}7 T- @, H; j+ \% t3 D% R
3 u7 W3 i) V4 ]# e,还有一点是当我注释掉UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16); 这句话的时候,在接收端使用115200波特率的串口助手接收信息,接收到的数据与发送的数据就一致,但是只要加了这话,无论串口的波特率我怎么设置,发送与接收到的数据都不同;我是使用创龙的OMAPL138用户资料中/demo/syslink/resource_sync这个程序改的.
: F0 {- h2 a! @9 P; w5 \ |
|