UART2_EDMA例程 - TMS320C6748 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10658|回复: 12
打印 上一主题 下一主题

UART2_EDMA例程

[复制链接]

3

主题

6

帖子

37

积分

新手上路

Rank: 1

积分
37
跳转到指定楼层
楼主
发表于 2015-11-18 15:45:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
C6748的板子,自带的UART2_EDMA例程是通过UART串口把数据传输到PC机,可是每次只有输入达到5个字符才一起显示在上位机,而且只能传输一次,在输入不管多少个字符都不会再传输了,我现在的问题是想要能够无限次的输入并每输入一个字符就在上位机显示一个,请问该怎么弄?谢谢了!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
13#
发表于 2016-9-21 18:07:34 | 只看该作者
CKC 发表于 2016-9-20 00:05
// 主循环
        for(;;)
        {

每次必须重配 EDMA3 参数 然后使能
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
12#
发表于 2016-9-21 18:07:34 | 只看该作者
CKC 发表于 2016-9-20 00:05
// 主循环
        for(;;)
        {

每次必须重配 EDMA3 参数 然后使能
回复 支持 反对

使用道具 举报

1

主题

4

帖子

45

积分

新手上路

Rank: 1

积分
45
11#
发表于 2016-9-20 00:05:13 | 只看该作者
   // 主循环
        for(;;)
        {
            // 接收数据
            UartReceiveData(EDMA3_CHA_UART2_RX, EDMA3_CHA_UART2_RX, buffer);

            // 使能串口 DMA 模式
            UARTDMAEnable(SOC_UART_2_REGS, UART_RX_TRIG_LEVEL_1 | \
                                             UART_DMAMODE |        \
                                             UART_FIFO_MODE );

            // 等待从回调函数返回
            while(flag == 0);
            flag = 0;

            // 发送数据
            UartTransmitData(EDMA3_CHA_UART2_TX, EDMA3_CHA_UART2_TX, buffer, RX_BUFFER_SIZE);

            // 使能串口 DMA 模式
            UARTDMAEnable(SOC_UART_2_REGS, UART_RX_TRIG_LEVEL_1 |  \
                                             UART_DMAMODE |         \
                                             UART_FIFO_MODE );

            // 等待从回调函数返回
            while(flag == 0);
            flag = 0;
        }
请问,主循环里面怎么看上去像查询模式?为什么是先发送/接收,再使能?为什么每次都要使能?

点评

每次必须重配 EDMA3 参数 然后使能  详情 回复 发表于 2016-9-21 18:07
每次必须重配 EDMA3 参数 然后使能  详情 回复 发表于 2016-9-21 18:07
回复 支持 反对

使用道具 举报

7

主题

45

帖子

169

积分

注册会员

Rank: 2

积分
169
10#
发表于 2016-9-13 20:07:29 | 只看该作者
EDMA3 的传输完成中断进不去,IPR相应位已经置1,其他中断都能运行。
看到有人解释“EDMA的中断要从相应的region配置,不是从global配置。”   不理解 ,求解答???
回复 支持 反对

使用道具 举报

0

主题

10

帖子

1035

积分

金牌会员

Rank: 6Rank: 6

积分
1035
9#
发表于 2016-5-3 20:29:40 | 只看该作者
有没有EDMA的使用心得呢,给分享一下
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
8#
发表于 2015-11-23 09:17:34 | 只看该作者
xaut606 发表于 2015-11-23 08:54
我现在接触C6748有一段时间了,一直都是在看例程和一些datasheet,我现在想编一些简单的程序练练手,请问编 ...

这个.... 根据需要来吧
比如 你正在参与的项目
回复 支持 反对

使用道具 举报

3

主题

6

帖子

37

积分

新手上路

Rank: 1

积分
37
7#
 楼主| 发表于 2015-11-23 08:54:20 | 只看该作者
我现在接触C6748有一段时间了,一直都是在看例程和一些datasheet,我现在想编一些简单的程序练练手,请问编一些什么样的程序比较适合?麻烦给推荐几个,最好是能在6748上仿真的!

点评

这个.... 根据需要来吧 比如 你正在参与的项目  详情 回复 发表于 2015-11-23 09:17
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
6#
发表于 2015-11-22 14:23:14 | 只看该作者
xaut606 发表于 2015-11-21 10:00
恩,跑通了!
// 回调函数
void (*cb_Fxn[EDMA3_NUM_TCC]) (unsigned int tcc, unsigned int status);

回调函数就是通过指针调用的函数
在这里就是传输完成后禁用 DMA
回复 支持 反对

使用道具 举报

3

主题

6

帖子

37

积分

新手上路

Rank: 1

积分
37
5#
 楼主| 发表于 2015-11-21 10:00:33 | 只看该作者
恩,跑通了!
// 回调函数
void (*cb_Fxn[EDMA3_NUM_TCC]) (unsigned int tcc, unsigned int status);
void callback(unsigned int tccNum, unsigned int status);
// 注册回调函数
    cb_Fxn[EDMA3_CHA_UART2_TX] = &callback;
// 等待从回调函数返回
    while(flag == 0);
但是关于回调函数这块我还是没能很好的理解,麻烦您给在详细解答一下,非常感谢!

点评

回调函数就是通过指针调用的函数 在这里就是传输完成后禁用 DMA  详情 回复 发表于 2015-11-22 14:23
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 02:14 , Processed in 0.044116 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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