OMAPL138中在DSP端程序设置串口1,数据收发不一致; - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4030|回复: 0

[未解决] OMAPL138中在DSP端程序设置串口1,数据收发不一致;

[复制链接]
回帖奖励 2 金钱 回复本帖可获得 2 金钱奖励! 每人限 1 次

1

主题

1

帖子

1028

积分

金牌会员

Rank: 6Rank: 6

积分
1028
发表于 2019-11-27 17:36:38 | 显示全部楼层 |阅读模式
我的问题是这样的,我这里需要使用OMAPL138连接485设备,想用OMAPL138的DSP端与485设备通信,在DSP端上的程序设置串口1后,发现DSP端发送的数据与接收到的数据不一致,我的串口设置程序如下:% h+ L$ E$ I3 m. [: J
void UART1INT( )
1 [0 l, J4 c. [2 E{2 i" t$ _3 S: m0 M$ T
        // 使能 GPIO 模块- G; h0 S/ t5 A$ k! L8 X
        // 对相应外设模块的使能也可以在 BootLoader 中完成
. @/ s1 I2 D4 |2 f" J7 f* \        PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
, J7 B* a" @; C$ S/ A6 Z    // 使能 UART1 模块
# j% z  @7 U) _# [$ P3 g2 W        PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART1, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);  ~& ~) s( D8 @
        // 使能 UART1 禁用流控
4 p7 r% G$ y) E4 |8 N        UARTPinMuxSetup(1, FALSE);# e2 A' c2 K3 E  C# N
        // RS485 Enable 管脚
( g; ~, ?; E# j4 s2 a5 j" w8 j+ D; x        RS485PinMuxSetup();
0 Z& m9 J2 T! V7 X) r  p) g       
1 }! j$ R0 L; i+ w, [- J' o        for(count=0;count<20000000;count++){};
5 E$ U+ y# s: O# o        // 配置 UART1 参数* J, Q/ _, I+ L. u  P
        // 波特率 9600 数据位 8 停止位 1 无校验位,第四个参数的意思是 产生一个16*参考时钟用于内部发送和接收逻辑(网上看的)
$ @( k* J( w) S6 e: H    UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16);; |& W3 L/ F4 l
        // 使能 UART1
% ]4 o; b: B& Q3 F! N0 _        UARTEnable(SOC_UART_1_REGS);
% Z* \+ W" X2 O" F
2 L7 v8 n0 B/ v4 I    // 设置使能管脚为输出状态 GPIO0[12]
9 h5 g, j( C- G' p/ R8 U        GPIODirModeSet(SOC_GPIO_0_REGS, 12, GPIO_DIR_OUTPUT);  e5 V2 }" c! b! H" `) G) l

0 I- {  N* C* }& Q$ A; y        // 使能接收 / 发送 FIFO( ~1 d3 f/ S3 G5 N
        UARTFIFOEnable(SOC_UART_1_REGS);6 N3 z3 A( F0 ~! U5 k- X; d

  z/ j  Q# J2 ]/ ^- K+ p) o  p        // 设置 FIFO 级别+ n% M* ^7 A& U# ]
        UARTFIFOLevelSet(SOC_UART_1_REGS, UART_RX_TRIG_LEVEL_1);3 s! X& j9 Y- m& q# E) C$ R

% m. g/ ~4 Z- k        // UART 中断初始化$ d- j) h3 g/ O6 V. `' u
                // 使能中断
! T' Y' C6 Y; \+ s- G        unsigned int intFlags = 0;1 {( y- U( d* b7 ?! L
        intFlags |= (UART_INT_LINE_STAT  |  \+ k1 E- n9 K0 r. s4 Y$ @5 U, F
                                 UART_INT_RXDATA_CTI);# t5 W* _4 v7 ~# e
        UARTIntEnable(SOC_UART_1_REGS, intFlags);
* w. _. y7 F# e3 i- D4 \' P}, {2 r: i  @8 C

( M3 t" ^6 b# I" D; n( R0 j5 N,还有一点是当我注释掉UARTConfigSetExpClk(SOC_UART_1_REGS, UART_1_FREQ, BAUD_9600, UART_WORDL_8BITS, UART_OVER_SAMP_RATE_16); 这句话的时候,在接收端使用115200波特率的串口助手接收信息,接收到的数据与发送的数据就一致,但是只要加了这话,无论串口的波特率我怎么设置,发送与接收到的数据都不同;我是使用创龙的OMAPL138用户资料中/demo/syslink/resource_sync这个程序改的.( [4 U6 d* g' b5 Q7 n; ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-4-18 18:05 , Processed in 0.083365 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表