找回密码
 立即注册
查看: 339|回复: 21

32G8K64, ADC-DMA 采集数据错序

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-04-06 09:27:31
已绑定手机

1

主题

12

回帖

53

积分

注册会员

积分
53
发表于 2025-4-3 09:58:01 | 显示全部楼层 |阅读模式
扫描端口9F01,即0,8,9,10,11,12,15。扫描四次,定义采集存储数组为[7][12]。15采集内部电压。问题是数组中第一个数据像是采集端口序号,但是顺序还向后推了一个端口,依次循环。存储的端口序号的位置不知道存的什么数据。有官方技术人员或者懂的同行吗,dma调iic通信的时候发现也是顺序错位搞不懂为什么这样,是哪里参数没配置对?
系统27Mhz,全部用内部的27MHz。











回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-3 10:03:00 | 显示全部楼层
关于STC32G8K64 ADC DMA采集数据错序的问题,根据您描述的现象,可能存在以下几个方面的原因:

1. DMA配置问题
DMA通道配置:DMA通道的源地址和目标地址配置是否正确?确保DMA的源地址指向ADC数据寄存器,目标地址指向您定义的存储数组。
DMA传输模式:DMA的传输模式是否配置为循环模式(Circular Mode)?如果配置为循环模式,DMA会在传输完一组数据后自动重新开始,可能导致数据错位。
DMA传输大小:DMA的传输大小(Transfer Size)是否与ADC数据寄存器的大小匹配?如果传输大小不匹配,可能导致数据错位。

2. ADC配置问题
ADC扫描顺序:ADC的扫描顺序是否正确配置?确保ADC的扫描顺序与您期望的端口顺序一致。
ADC触发方式:ADC的触发方式是否正确配置?如果使用外部触发,确保触发信号与ADC的采样时钟同步。
ADC采样时间:ADC的采样时间是否足够?如果采样时间不足,可能导致数据采集不准确。

3. 时钟配置问题
系统时钟:系统时钟配置为27MHz,确保ADC的时钟分频系数正确,以保证ADC的采样时钟在允许范围内。
DMA时钟:DMA的时钟是否与系统时钟同步?如果DMA时钟与系统时钟不同步,可能导致数据传输错位。

4. 数据存储问题
存储数组定义:确保存储数组的定义与ADC采集的数据类型匹配。如果存储数组定义为16位整数,而ADC数据为12位,可能导致数据错位。
数据对齐:确保存储数组的地址对齐方式与DMA传输的数据对齐方式一致。如果地址对齐方式不一致,可能导致数据错位。

5. 调试建议
调试工具:使用调试工具(如STC-ISP)查看ADC和DMA的寄存器状态,确认配置是否正确。
逐步调试:逐步调试ADC和DMA的配置,先单独测试ADC的采集功能,再测试DMA的传输功能,最后将两者结合,以定位问题所在。

6. 官方技术支持
官方文档:参考STC32G8K64的官方技术文档,确认ADC和DMA的配置步骤和参数设置。
官方论坛:在STC官方论坛或技术支持渠道寻求帮助,提供详细的配置信息和调试结果,以便官方技术人员更好地协助解决问题。

7. I2C通信问题
I2C配置:如果I2C通信也存在顺序错位问题,检查I2C的时钟配置、地址配置和数据传输顺序,确保与DMA的配置一致。
时序分析:使用逻辑分析仪或示波器分析I2C通信的时序,确认数据传输的顺序和时序是否符合预期。

综上所述,建议您从DMA配置、ADC配置、时钟配置和数据存储等方面逐一排查问题,并结合调试工具和官方技术支持,逐步定位和解决问题。希望这些建议对您有所帮助。

[本文内容由国芯人工智能辅助生成,仅供参考]

点评

人机回复的器件手册内容一点关系都没有  发表于 2025-4-3 11:20
回复 支持 反对

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-3 10:03:00 | 显示全部楼层
针对您描述的STC32G8K64 ADC DMA采集数据错序的问题,以下是一些可能的原因及解决方案,供您参考:

1. DMA配置问题
DMA通道配置:请检查DMA通道的配置是否正确,特别是源地址和目标地址的设置。确保DMA的源地址指向ADC数据寄存器,目标地址指向您定义的存储数组。
DMA传输模式:确认DMA的传输模式是否为“循环模式”(Circular Mode),这种模式下DMA会循环读取ADC数据,可能导致数据错位。如果不需要循环模式,请改为“单次模式”(Single Mode)。
DMA传输大小:确保DMA传输的数据大小与ADC采集的数据大小一致。如果DMA传输的数据大小与ADC数据寄存器的大小不匹配,可能导致数据错位。

2. ADC配置问题
ADC通道顺序:检查ADC通道的扫描顺序是否正确。您提到的扫描端口为9F01,即0, 8, 9, 10, 11, 12, 15。请确认ADC的通道配置寄存器(如ADCCHSELR)是否正确设置了这些通道。
ADC采样时间:确保ADC的采样时间足够长,以避免采样不完整导致数据错位。可以适当增加采样时间,观察是否有所改善。
ADC触发方式:检查ADC的触发方式是否正确。如果使用DMA触发ADC采样,请确保DMA触发信号与ADC采样时钟同步。

3. 数据存储问题
数组定义:请确认存储数组的定义是否正确,特别是数组的大小和数据类型是否与ADC数据匹配。如果数组大小不足,可能导致数据覆盖或错位。
数据存储顺序:检查数据存储的顺序是否与ADC通道扫描顺序一致。如果存储顺序与扫描顺序不一致,可能导致数据错位。

4. 时钟配置问题
系统时钟:您提到系统时钟为27MHz,请确认ADC和DMA的时钟配置是否正确。确保ADC和DMA的时钟源与系统时钟同步,避免时钟不同步导致数据错位。
时钟分频:检查ADC和DMA的时钟分频设置是否正确。如果时钟分频设置不当,可能导致采样速率与DMA传输速率不匹配,从而引起数据错位。

5. 调试建议
单步调试:建议使用调试工具进行单步调试,观察ADC和DMA的工作状态,特别是数据传输过程中的数据流向和时序。
数据校验:在存储数组中添加校验位或标志位,以便在数据传输过程中进行数据校验,确保数据的完整性和正确性。

6. 官方技术支持
联系官方:如果以上方法仍无法解决问题,建议联系STC官方技术支持,提供详细的配置信息和调试日志,以便官方技术人员进行进一步分析和解决。

7. 参考文档
数据手册:请仔细阅读STC32G8K64的数据手册,特别是ADC和DMA相关章节,确保所有配置参数符合手册要求。
应用笔记:参考STC官方提供的应用笔记和示例代码,了解ADC和DMA的典型配置和使用方法。

希望以上建议能帮助您解决ADC DMA采集数据错序的问题。如果问题仍然存在,建议进一步深入调试或寻求官方技术支持。

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-04-06 09:27:31
已绑定手机

1

主题

12

回帖

53

积分

注册会员

积分
53
发表于 2025-4-3 10:21:56 | 显示全部楼层
配置用的是官方例程
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2025-4-3 11:27:45 | 显示全部楼层
截图202504031127059569.jpg

深圳国芯人工智能有限公司-实验箱

这有 ADC-DMA 的演示程序

截图202504031128444964.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-04-06 09:27:31
已绑定手机

1

主题

12

回帖

53

积分

注册会员

积分
53
发表于 2025-4-3 12:43:54 | 显示全部楼层
神*** 发表于 2025-4-3 11:27
深圳国芯人工智能有限公司-实验箱

这有 ADC-DMA 的演示程序

例程编译下载进去同样有问题
截图202504031243021537.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-04-06 09:27:31
已绑定手机

1

主题

12

回帖

53

积分

注册会员

积分
53
发表于 2025-4-3 13:29:29 | 显示全部楼层
神*** 发表于 2025-4-3 11:27
深圳国芯人工智能有限公司-实验箱

这有 ADC-DMA 的演示程序

型号是32G8K48
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-04-06 09:27:31
已绑定手机

1

主题

12

回帖

53

积分

注册会员

积分
53
发表于 2025-4-3 13:33:27 | 显示全部楼层
神*** 发表于 2025-4-3 11:27
深圳国芯人工智能有限公司-实验箱

这有 ADC-DMA 的演示程序

adc只采样adc1和adc15时在线仿真如图显示,
情形一模一样,第一个字节是通道号,
但是向后循环一次,通道号本身的位置是采集的数据的高字节。

截图202504031331111735.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2025-4-3 14:23:04 | 显示全部楼层
截图202504031416278638.jpg

具体到您的应用,每个通道[n][0~7]为ADC值(先高字节再低字节),[n][8]为通道号,[n][9]为平均值余数,[n][10]为平均值高字节,[n][11]为平均值低字节。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-04-06 09:27:31
已绑定手机

1

主题

12

回帖

53

积分

注册会员

积分
53
发表于 2025-4-3 14:30:58 | 显示全部楼层
梁*** 发表于 2025-4-3 14:23
具体到您的应用,每个通道[n][0~7]为ADC值(先高字节再低字节),[n][8]为通道号,[n][9]为平均值余数,[ ...

对,手册上是这么写的但是实际上不对吗,官方例程下载进去一样的情况问题。找原因?如何解决,STC32G8K48,官方有这个型号的程序?上面给的程序不是这个型号的,测试有问题

点评

STC32G12K128与STC32G8K64的ADC-DMA是兼容的。  详情 回复 发表于 2025-4-3 14:58
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 20:35 , Processed in 0.354400 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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