嵌入式开发者社区

标题: OMAPL138中在DSP端程序设置串口1,数据收发不一致; [打印本页]

作者: wahha    时间: 2019-11-27 17:36
标题: OMAPL138中在DSP端程序设置串口1,数据收发不一致;
我的问题是这样的,我这里需要使用OMAPL138连接485设备,想用OMAPL138的DSP端与485设备通信,在DSP端上的程序设置串口1后,发现DSP端发送的数据与接收到的数据不一致,我的串口设置程序如下:; H" U# l% K& w* m0 V; L
void UART1INT( )8 f- X0 N4 T  j' B: z: _' W! ]
{
- K) W2 j# j% z2 }& @2 C) [# ]         // 使能 GPIO 模块
/ b- o9 _% e7 r$ D. q        // 对相应外设模块的使能也可以在 BootLoader 中完成  v9 o/ a2 N, A( O0 h: t+ K
        PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);$ r4 n8 |, A$ x- i! L* F5 Y( t$ o
    // 使能 UART1 模块' e: T( H' l2 o/ Z
        PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART1, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);& }8 Z$ w, d- w' R7 x5 U
        // 使能 UART1 禁用流控' w. k& \. n# L' q/ d- ?  Y/ V
        UARTPinMuxSetup(1, FALSE);1 G, w& j8 t8 F$ a5 J
        // RS485 Enable 管脚
$ U! S( x( l/ ^1 B0 p        RS485PinMuxSetup();" u+ |" x" n0 `
       
- N3 u" p% o* K1 A        for(count=0;count<20000000;count++){};
" I( n  s: B2 h* F        // 配置 UART1 参数
/ L( Y( ^4 a- l4 }5 H        // 波特率 9600 数据位 8 停止位 1 无校验位,第四个参数的意思是 产生一个16*参考时钟用于内部发送和接收逻辑(网上看的) ( M0 T5 O( _* Z+ {: C7 F* u7 i
    UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);1 \/ Q4 \# P: D+ m) F7 g
        // 使能 UART1! Z; m+ j2 d. ]- A" J4 y7 K6 }* J
        UARTEnable(SOC_UART_1_REGS);9 I3 h& A( q$ g3 C

3 i; i( c* ?9 [/ f: `1 h& A8 O* ?    // 设置使能管脚为输出状态 GPIO0[12]
, j$ c8 w0 ~' H        GPIODirModeSet(SOC_GPIO_0_REGS, 12, GPIO_DIR_OUTPUT);! v6 g& r* K) G( p: S, H1 B

5 l- K; L& m. R* F  |        // 使能接收 / 发送 FIFO
. [. x' f2 p( [2 W        UARTFIFOEnable(SOC_UART_1_REGS);
3 c0 {* K' O) q$ Q0 I$ E* ^  G  P: c- O/ i4 s- P% F' {8 T2 G; c
        // 设置 FIFO 级别
. `: v" ?" O, I        UARTFIFOLevelSet(SOC_UART_1_REGS, UART_RX_TRIG_LEVEL_1);
5 l. f6 d  n6 T. T3 S
  B: j' l) }4 D4 E% P% Y        // UART 中断初始化. u* C9 h4 h! u" ~& B2 ^
                // 使能中断
4 u* y* K, x/ e4 M7 s+ u; a        unsigned int intFlags = 0;1 z4 p/ B' n2 Y7 o3 M0 r
        intFlags |= (UART_INT_LINE_STAT  |  \% n: _, o" d* x4 x" Q& r
                                 UART_INT_RXDATA_CTI);* W2 u4 k4 U- T1 I4 u
        UARTIntEnable(SOC_UART_1_REGS, intFlags);
" h2 |& Y8 S+ @9 ~4 B}. m- Q  D* |" T% `6 j

! j! r6 d* {/ e# h,还有一点是当我注释掉UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16); 这句话的时候,在接收端使用115200波特率的串口助手接收信息,接收到的数据与发送的数据就一致,但是只要加了这话,无论串口的波特率我怎么设置,发送与接收到的数据都不同;我是使用创龙的OMAPL138用户资料中/demo/syslink/resource_sync这个程序改的.3 s" O  B: U+ S  ^4 c# O





欢迎光临 嵌入式开发者社区 (https://51ele.net/) Powered by Discuz! X3.4