找回密码
 立即注册
查看: 782|回复: 13

请教串口DMA发送问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-15 22:45:37

12

主题

96

回帖

604

积分

高级会员

积分
604
发表于 2024-9-5 02:45:47 | 显示全部楼层 |阅读模式
用32G12K64的串口3通过DMA发送数据,数据长度最长不超过20,
看到例程好像是每发一个数据,都会进一次DMA发送中断,
不是把全部的数据数据发送完才进中断吗?

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:518
  • 最近打卡:2025-05-01 05:52:49
已绑定手机

46

主题

1694

回帖

2540

积分

金牌会员

积分
2540
发表于 2024-9-5 06:50:41 | 显示全部楼层
dma串口是把数据发完了进中断,是不是你开了串口中断了?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:176
  • 最近打卡:2025-02-19 17:24:49

15

主题

265

回帖

1387

积分

金牌会员

积分
1387
发表于 2024-9-5 07:50:28 | 显示全部楼层
jw*** 发表于 2024-9-5 06:50
dma串口是把数据发完了进中断,是不是你开了串口中断了?

你的分析是对的,估计开了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-15 22:45:37

12

主题

96

回帖

604

积分

高级会员

积分
604
发表于 2024-9-5 12:22:52 | 显示全部楼层
本帖最后由 深山老妖 于 2024-9-5 12:24 编辑
jw*** 发表于 2024-9-5 06:50
dma串口是把数据发完了进中断,是不是你开了串口中断了?

在论坛里看到的例程,看不明白。


1725510211576.png


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-15 22:45:37

12

主题

96

回帖

604

积分

高级会员

积分
604
发表于 2024-9-5 12:59:34 | 显示全部楼层
wnag*** 发表于 2024-9-5 12:43
不应该呀,DMA设置好就不用管了,这里怎么还在处理字节?

所以我也感觉到奇怪。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-15 22:45:37

12

主题

96

回帖

604

积分

高级会员

积分
604
发表于 2024-9-5 16:29:49 | 显示全部楼层
jw*** 发表于 2024-9-5 06:50
dma串口是把数据发完了进中断,是不是你开了串口中断了?

请问数据是如何复制进DMA缓冲区的,一直没有看明白,下面是自己的应用

unsigned char xdata TX3_485_DATA[22];
unsigned char xdata RX3_485_DATA[22];

/*--------------------------------------------
初始化串口3DMA,只使能DMA发送,不使能DMA接收
--------------------------------------------*/
void DMA_UART3_Init(void)            
{
    DMA_UR3T_STA = 0x00; //清除标志
                DMA_UR3T_CFG = 0x8A; //允许DMA中断, 中断Priority_2优先级,传输Priority_2优先级
                DMA_UR3R_CFG = 0x00; //关闭接收DMA       
}
/*--------------------------------------------
串口3 DMA发送
Led:数据长度 最大不大于20
TX3_485_EN:485发送使能
--------------------------------------------*/
void DMA_TX3_DATA(unsigned char Len)//发送数据
{       
        DMA_UR3T_AMT = 0x15;                //设置传输总字节数(低8位):n+1 共20个数据
        DMA_UR3T_AMTH = 0x00;                //设置传输总字节数(高8位):n+1       
       
//将TX3_485_DATA[20]内的数据复制至发送缓冲区  如何复制?       
       
        TX3_485_EN    = 1;//开启485发送使能
        DMA_UR3T_CR   = 0XC0; //启动DMA 开始发送数据
}


/*----------------------------
UART3 DMA TX 中断服务程序
-----------------------------*/

void DMA_UR3T() interrupt 54 //串口3 DMA TX中断
{
        if (DMA_UR3T_STA & 0x01)        //发送完成
        {
                DMA_UR3T_STA &= ~0x01;
                DmaTxFlag = 1;
                TX3_485_EN    = 1;//关闭485发送使能
        }
        if (DMA_UR3T_STA & 0x04)        //数据覆盖
        {
                DMA_UR3T_STA &= ~0x04;
        }
}

点评

理解反了,其实是将任意一块xdata区域指定一段长度,然后让dma发送。不用专门的做一个缓冲区复制。 数据的来源一般是产生数据或者是其他区域接收数据后处理完成  详情 回复 发表于 2024-9-5 18:41
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-9-5 18:41:34 | 显示全部楼层
深山*** 发表于 2024-9-5 16:29
请问数据是如何复制进DMA缓冲区的,一直没有看明白,下面是自己的应用

unsigned char xdata TX3_485_DAT ...

理解反了,其实是将任意一块xdata区域指定一段长度,然后让dma发送。不用专门的做一个缓冲区复制。
数据的来源一般是产生数据或者是其他区域接收数据后处理完成
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-15 22:45:37

12

主题

96

回帖

604

积分

高级会员

积分
604
发表于 2024-9-5 18:44:50 | 显示全部楼层
王*** 发表于 2024-9-5 18:41
理解反了,其实是将任意一块xdata区域指定一段长度,然后让dma发送。不用专门的做一个缓冲区复制。
数据 ...

对于我的这个情况,应该怎么写?

点评

在缓冲区内随便填东西,最后使用 DMA_UR3T_CR = 0XC0; //启动DMA 开始发送数据 语句启动发送就好了  详情 回复 发表于 2024-9-5 18:49
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-9-5 18:49:42 | 显示全部楼层
深山*** 发表于 2024-9-5 18:44
对于我的这个情况,应该怎么写?

在缓冲区内随便填东西,最后使用
DMA_UR3T_CR   = 0XC0; //启动DMA 开始发送数据
语句启动发送就好了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-02-15 22:45:37

12

主题

96

回帖

604

积分

高级会员

积分
604
发表于 2024-9-5 18:52:14 | 显示全部楼层
王*** 发表于 2024-9-5 18:49
在缓冲区内随便填东西,最后使用
DMA_UR3T_CR   = 0XC0; //启动DMA 开始发送数据
语句启动发送就好了 ...

想知道的是,如何把TX3_485_DATA[22]内部的内容放进缓冲区。

点评

你指定TX3_485_DATA的地址给dma寄存器,那么这个部分就成为缓冲区了  详情 回复 发表于 2024-9-5 18:53
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 06:36 , Processed in 0.126688 second(s), 121 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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