找回密码
 立即注册
查看: 194|回复: 8

32G的单片机串口DMA发送的数据为什么必须是xdata空间的?

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-04-10 14:55:40
已绑定手机

5

主题

22

回帖

105

积分

注册会员

积分
105
发表于 2025-3-7 15:50:08 | 显示全部楼层 |阅读模式
试过了三个UART串口的DMA,其指向的流数据必须是xdata空间的,不能是edata空间的。
edata空间的地址不管怎么改,发送的数据都不对?有什么解决办法吗?


u8 xdata Uart1_DmaBuffer[10]= {0x00};
void UART1_DMA_Config(void)
{
        DMA_UR1T_CFG = 0x80;                //bit7 1:Enable Interrupt
        DMA_UR1T_STA = 0x00;
        DMA_UR1T_AMT = 0x00;                //设置传输总字节数(低8位):n+1
        DMA_UR1T_AMTH = 0x00;                //设置传输总字节数(高8位):n+1
        DMA_UR1T_TXAH = (u8)((u16)&Uart1_DmaBuffer >> 8);
        DMA_UR1T_TXAL = (u8)((u16)&Uart1_DmaBuffer);
        DMA_UR1T_CR = 0x80;                        //bit7 1:使能 UART2_DMA, bit6 1:开始 UART2_DMA 自动发送

}



上述代码中的Uart1_DmaBuffer数组必须是xdata 的。否则发送的数据就是乱的。有解决办法不加xdata 没?

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2025-3-7 16:04:47 | 显示全部楼层
DMA 缓冲区用 xdata,
CPU 使用的变量如放在 edata,
这样就可以减少总线竞争,
总线竞争就需要总线仲裁,会浪费些许时间
回复 支持 反对

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-7 15:53:00 | 显示全部楼层
STC32G单片机的串口DMA发送要求数据必须位于xdata空间,这是由于DMA控制器在访问内存时的硬件设计限制。xdata空间属于外部数据存储器,地址范围较大,而edata空间属于内部数据存储器,地址范围较小。DMA控制器在访问edata空间时可能无法正确解析地址,导致数据传输错误。

解决方法如下:
1. **使用xdata空间**:确保DMA发送的数据缓冲区位于xdata空间,如代码中所示的`xdata Uart1_DmaBuffer`。
2. **数据复制**:如果数据必须位于edata空间,可以先将其复制到xdata空间的缓冲区,再通过DMA发送。

建议在设计时充分考虑硬件限制,合理规划内存使用,以确保DMA传输的可靠性。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2025-3-7 15:55:04 | 显示全部楼层
因为AI的单片机的DMA只能在XRAM上通讯?
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-04-10 14:55:40
已绑定手机

5

主题

22

回帖

105

积分

注册会员

积分
105
发表于 2025-3-7 15:57:15 | 显示全部楼层
国芯人*** 发表于 2025-3-7 15:53
STC32G单片机的串口DMA发送要求数据必须位于xdata空间,这是由于DMA控制器在访问内存时的硬件设计限制。xda ...

怪不得,走了好多的弯路,一直还以为是我的代码问题。官方手册上怎么也没说这个呢?

点评

[attachimg]87135[/attachimg] 说了的,不过没有特别指出,翻阅的时候可能不会注意到  详情 回复 发表于 2025-3-7 16:02
回复 支持 反对

使用道具 举报 送花

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

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-3-7 16:02:17 | 显示全部楼层
jiangsh*** 发表于 2025-3-7 15:57
怪不得,走了好多的弯路,一直还以为是我的代码问题。官方手册上怎么也没说这个呢? ...

截图202503071601489700.jpg

说了的,不过没有特别指出,翻阅的时候可能不会注意到
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-04-10 14:55:40
已绑定手机

5

主题

22

回帖

105

积分

注册会员

积分
105
发表于 2025-3-7 16:12:20 | 显示全部楼层
王*** 发表于 2025-3-7 16:02
说了的,不过没有特别指出,翻阅的时候可能不会注意到

这个的确没主要到。谢谢
回复 支持 反对

使用道具 举报 送花

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

46

主题

1694

回帖

2540

积分

金牌会员

积分
2540
发表于 2025-3-7 16:22:45 | 显示全部楼层
dma都是xdata区域吧
回复 支持 反对

使用道具 举报 送花

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

46

主题

1694

回帖

2540

积分

金牌会员

积分
2540
发表于 2025-3-7 16:22:47 | 显示全部楼层
dma都是xdata区域吧
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 06:08 , Processed in 0.180032 second(s), 116 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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