|
|
我的问题是这样的,我这里需要使用OMAPL138连接485设备,想用OMAPL138的DSP端与485设备通信,在DSP端上的程序设置串口1后,发现DSP端发送的数据与接收到的数据不一致,我的串口设置程序如下:
- I5 R& {6 _) u3 d; L j5 \- Tvoid UART1INT( )" N9 O4 o) w0 s! @; v/ K
{
, H V- ~* W+ q( G // 使能 GPIO 模块) {! ^3 G( K: Y8 a
// 对相应外设模块的使能也可以在 BootLoader 中完成
7 q }+ h; }( o$ B0 s PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 y' ~' f: _ N Y( i! Q* t! T // 使能 UART1 模块1 G# c W7 Y/ T
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART1, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
" \6 A" |' @: I2 f& U // 使能 UART1 禁用流控
' K" F; q# G! i# T/ ^& d UARTPinMuxSetup(1, FALSE); C4 b& j+ t+ Q5 J9 F
// RS485 Enable 管脚; F! L. V# N, u1 u: y' ^3 R1 I
RS485PinMuxSetup();. q# g, l" R4 Q# o' D
! b+ \/ b7 y. G$ X, d* |
for(count=0;count<20000000;count++){};
0 A8 T, |6 r+ Q) T9 n* E& H/ N6 y // 配置 UART1 参数' Q2 e% l( u" D# @ x0 O
// 波特率 9600 数据位 8 停止位 1 无校验位,第四个参数的意思是 产生一个16*参考时钟用于内部发送和接收逻辑(网上看的) 6 Y0 s w) z# e
UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);, H% p+ u$ ~% m# y& l
// 使能 UART1
2 ?+ }+ b0 h$ @ w UARTEnable(SOC_UART_1_REGS);, N8 \( v( \; Q& I" o9 `' q
- D* O0 \* u! B* @9 y( L* y! a6 Z2 Q // 设置使能管脚为输出状态 GPIO0[12]1 c2 P, O1 A6 a! R
GPIODirModeSet(SOC_GPIO_0_REGS, 12, GPIO_DIR_OUTPUT);
$ k# L" }" k9 V9 W( e5 R/ E3 a3 T8 q0 ?* m2 \( |6 F' ^
// 使能接收 / 发送 FIFO
. L: y$ @ F- l8 ?; C' }0 B UARTFIFOEnable(SOC_UART_1_REGS);
4 h) H* T( \3 d
: i+ W* b9 G( a+ E1 t% ~ // 设置 FIFO 级别7 o$ L& L9 R( p$ O' A0 L
UARTFIFOLevelSet(SOC_UART_1_REGS, UART_RX_TRIG_LEVEL_1);
' r. R7 ^! ^+ D
( O8 d: \3 R8 g // UART 中断初始化
: A; r- v2 x# q4 t+ l // 使能中断 o0 W: n& v' C
unsigned int intFlags = 0;
& k0 W9 C' [: ]# o! i' J intFlags |= (UART_INT_LINE_STAT | \
8 Y; D( K2 z9 V1 J$ p Y! i6 F9 j UART_INT_RXDATA_CTI);
! w3 i! ]4 p7 Z0 [ A X UARTIntEnable(SOC_UART_1_REGS, intFlags);
' g7 g+ v% Z+ w; q# I}( d- A( u+ d: e( y
, R% I0 X! F+ V$ _$ W( i4 l* \0 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这个程序改的.1 Y0 D$ H+ Q/ ~3 ]' w
|
|