找回密码
 立即注册
查看: 311|回复: 10

AI8051U可以支持3路ADC同时采样嘛?

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-04-30 09:34:03
已绑定手机

11

主题

44

回帖

299

积分

中级会员

积分
299
发表于 2025-3-24 23:34:11 | 显示全部楼层 |阅读模式
AI8051U可以支持3路ADC同时采样嘛?

PWM中断自动触发ADC采样在HSPWM同样有效吗?
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-24 23:38:00 | 显示全部楼层
关于AI8051U是否支持3路ADC同时采样的问题,需要从技术架构和功能设计两方面进行分析。

首先,AI8051U是基于8051内核的增强型微控制器,其ADC模块的性能和特性是其功能设计的重要组成部分。通常情况下,ADC模块的设计会考虑到多通道采样需求,但具体能否支持多路同时采样,取决于其硬件架构和资源配置。

从技术角度来看,支持多路ADC同时采样的关键在于ADC模块是否具备独立的采样保持电路(Sample-and-Hold Circuit)以及足够的转换资源。如果AI8051U的ADC模块为每路通道配备了独立的采样保持电路,并且具备足够的转换器资源,那么理论上可以实现多路同时采样。然而,如果ADC模块采用分时复用(Time-Division Multiplexing)的方式工作,则无法实现真正的同时采样,只能通过快速切换通道来模拟多路采样。

根据AI8051U的技术文档和功能描述,其ADC模块支持多通道采样,但并未明确说明是否支持3路ADC同时采样。因此,从现有信息来看,无法直接断定其是否具备这一能力。建议参考官方技术手册或咨询技术支持团队,以获取更详细的硬件架构和功能说明。

此外,即使AI8051U的ADC模块不支持真正的同时采样,通过优化采样时序和算法,仍可以在一定精度和速度范围内实现多路信号的采集和处理。例如,可以通过提高采样频率、优化通道切换时间等方式,尽可能减少各通道之间的采样延迟,从而满足实际应用需求。

综上所述,AI8051U是否支持3路ADC同时采样,需结合其硬件架构和功能设计进行具体分析。如需明确答案,建议查阅官方技术文档或咨询专业技术人员。同时,在实际应用中,可通过优化采样策略,实现多路信号的采集和处理,以满足系统需求。

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

使用道具 举报 送花

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

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2025-3-25 07:55:41 | 显示全部楼层
AI8051U可以支持3路ADC同时采样嘛?
===分时切换到不同的通道,采样转换,只有1个ADC, 不是3个ADC

PWM中断自动触发ADC采样在HSPWM同样有效吗?


===可以
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-04-30 09:34:03
已绑定手机

11

主题

44

回帖

299

积分

中级会员

积分
299
发表于 2025-3-25 08:19:56 | 显示全部楼层
神*** 发表于 2025-3-25 07:55
AI8051U可以支持3路ADC同时采样嘛?
===分时切换到不同的通道,采样转换,只有1个ADC, 不是3个ADC

如果配置DMA ADC,PWM中断是否可以触发DMA ADC转换。

点评

参考库函数例程APP_DMA_AD和APP_HSPWM AI8051U传统风格库函数例程包发布-持续更新, 20250214 - 软件库函数/原理图库/PCB库/最小包装 国芯技术交流网站 - AI32位8051交流社区 DMA_AD: HSPWM使用:  详情 回复 发表于 2025-3-25 08:29
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:163
  • 最近打卡:2025-05-02 13:26:59
已绑定手机

56

主题

1319

回帖

2942

积分

荣誉版主

无情的代码机器

积分
2942
发表于 2025-3-25 08:29:56 | 显示全部楼层
hhhh*** 发表于 2025-3-25 08:19
如果配置DMA ADC,PWM中断是否可以触发DMA ADC转换。

参考库函数例程APP_DMA_AD和APP_HSPWM

AI8051U传统风格库函数例程包发布-持续更新, 20250214 - 软件库函数/原理图库/PCB库/最小包装 国芯技术交流网站 - AI32位8051交流社区
DMA_AD:
  1. #include "app.h"
  2. /*---------------------------------------------------------------------*/
  3. /* --- Web: www.STCAI.com ---------------------------------------------*/
  4. /*---------------------------------------------------------------------*/
  5. #include "APP_DMA_AD.h"
  6. #include "AI8051U_GPIO.h"
  7. #include "AI8051U_ADC.h"
  8. #include "AI8051U_UART.h"
  9. #include "AI8051U_DMA.h"
  10. #include "AI8051U_NVIC.h"
  11. #include "string.h"
  12. /*************    功能说明    **************
  13. 本程序演示多路ADC DMA采样.
  14. 初始化时先把要ADC转换的引脚设置为高阻输入.
  15. 设置数据批量传输(DMA)功能,所有通道一次循环采集的数据自动存放到DMA定义的xdata空间.
  16. 通过串口1(P3.0 P3.1)将DMA定义的xdata空间所收到的数据发送给上位机,波特率115200,N,8,1
  17. 用定时器做波特率发生器,建议使用1T模式(除非低波特率用12T),并选择可被波特率整除的时钟频率,以提高精度.
  18. 下载时, 选择时钟 40MHz (可以在配置文件"config.h"中修改).
  19. ******************************************/
  20. //========================================================================
  21. //                               本地常量声明   
  22. //========================================================================
  23. #define    ADC_CH       16      /* 1~16, ADC转换通道数, 需同步修改转换通道 */
  24. #define    ADC_DATA     12      /* 6~n, 每个通道ADC转换数据总数, 2*转换次数+4, 需同步修改转换次数 */
  25. //========================================================================
  26. //                               本地变量声明
  27. //========================================================================
  28. u8 chn = 0;
  29. u8 xdata DmaAdBuffer[ADC_CH][ADC_DATA];
  30. //========================================================================
  31. //                               本地函数声明
  32. //========================================================================
  33. //========================================================================
  34. //                            外部函数和变量声明
  35. //========================================================================
  36. //========================================================================
  37. // 函数: ADtoUART_init
  38. // 描述: 用户初始化程序.
  39. // 参数: None.
  40. // 返回: None.
  41. // 版本: V1.0, 2020-09-28
  42. //========================================================================
  43. void DMA_AD_init(void)
  44. {
  45.     ADC_InitTypeDef ADC_InitStructure;          //结构定义
  46.     COMx_InitDefine COMx_InitStructure;         //结构定义
  47.     DMA_ADC_InitTypeDef DMA_ADC_InitStructure;  //结构定义
  48.     memset(&ADC_InitStructure,0,sizeof(ADC_InitTypeDef));  //结构体初始化
  49.     memset(&COMx_InitStructure,0,sizeof(COMx_InitDefine));  //结构体初始化
  50.     memset(&DMA_ADC_InitStructure,0,sizeof(DMA_ADC_InitTypeDef));  //结构体初始化
  51.     //----------------------------------------------
  52.     P0_MODE_IN_HIZ(GPIO_Pin_LOW | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6);    //P0.0~P0.6 设置为高阻输入
  53.     P1_MODE_IN_HIZ(GPIO_Pin_All);           //P1.0~P1.7 设置为高阻输入
  54.     P3_MODE_IO_PU(GPIO_Pin_0 | GPIO_Pin_1); //P3.0,P3.1 设置为准双向口
  55.    
  56.     //----------------------------------------------
  57.     COMx_InitStructure.UART_Mode      = UART_8bit_BRTx; //模式,   UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
  58.     COMx_InitStructure.UART_BRT_Use   = BRT_Timer1;     //选择波特率发生器, BRT_Timer1/BRT_Timer2
  59.     COMx_InitStructure.UART_BaudRate  = 115200ul;       //波特率,     110 ~ 115200
  60.     COMx_InitStructure.UART_RxEnable  = ENABLE;         //接收允许,   ENABLE或DISABLE
  61.     UART_Configuration(UART1, &COMx_InitStructure);     //初始化串口 UART1,UART2,UART3,UART4
  62.     NVIC_UART1_Init(ENABLE,Priority_1);     //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
  63.     //----------------------------------------------
  64.     ADC_InitStructure.ADC_SMPduty   = 31;   //ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
  65.     ADC_InitStructure.ADC_CsSetup   = 0;    //ADC 通道选择时间控制 0(默认),1
  66.     ADC_InitStructure.ADC_CsHold    = 1;    //ADC 通道选择保持时间控制 0,1(默认),2,3
  67.     ADC_InitStructure.ADC_Speed     = ADC_SPEED_2X16T;      //设置 ADC 工作时钟频率 ADC_SPEED_2X1T~ADC_SPEED_2X16T
  68.     ADC_InitStructure.ADC_AdjResult = ADC_RIGHT_JUSTIFIED;  //ADC结果调整, ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
  69.     ADC_Inilize(&ADC_InitStructure);        //初始化
  70.     ADC_PowerControl(ENABLE);               //ADC电源开关, ENABLE或DISABLE
  71.     NVIC_ADC_Init(DISABLE,Priority_0);      //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
  72.     //----------------------------------------------
  73.     DMA_ADC_InitStructure.DMA_Enable = ENABLE;              //DMA使能 ENABLE,DISABLE
  74.     DMA_ADC_InitStructure.DMA_Channel = 0xffff;             //ADC通道使能寄存器, 1:使能, bit15~bit0 对应 ADC15~ADC0
  75.     DMA_ADC_InitStructure.DMA_Buffer = (u16)DmaAdBuffer;    //ADC转换数据存储地址
  76.     DMA_ADC_InitStructure.DMA_Times = ADC_4_Times;          //每个通道转换次数, ADC_1_Times,ADC_2_Times,ADC_4_Times,ADC_8_Times,ADC_16_Times,ADC_32_Times,ADC_64_Times,ADC_128_Times,ADC_256_Times
  77.     DMA_ADC_Inilize(&DMA_ADC_InitStructure);                //初始化
  78.     NVIC_DMA_ADC_Init(ENABLE,Priority_0,Priority_0);        //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0~Priority_3; 总线优先级(低到高) Priority_0~Priority_3
  79.     DMA_ADC_TRIG();        //触发启动转换
  80. }
  81. //========================================================================
  82. // 函数: Sample_DMA_AD
  83. // 描述: 用户应用程序.
  84. // 参数: None.
  85. // 返回: None.
  86. // 版本: V1.0, 2020-09-24
  87. //========================================================================
  88. void Sample_DMA_AD(void)
  89. {
  90.     u8 i,n;
  91.     u16 j;
  92.    
  93.    
  94.     if(DmaADCFlag)
  95.     {
  96.         DmaADCFlag = 0;
  97.         for(i=0; i<ADC_CH; i++)
  98.         {
  99.             for(n=0; n<ADC_DATA; n++)
  100.             {
  101.                 #if defined(_USE_KEILC251_COMPILER_) || defined(_USE_IAR_COMPILER_) || defined(_USE_SDCC_COMPILER_)
  102.                         printf("0x%02x ",DmaAdBuffer[i][n]);   //第1组数据,...,第n组数据,AD通道,平均余数,平均值
  103.                 #else
  104.                         printf("0x%02bx ",DmaAdBuffer[i][n]);   //第1组数据,...,第n组数据,AD通道,平均余数,平均值
  105.                 #endif
  106.                
  107.             }
  108.             printf("\r\n");
  109.         }
  110.         printf("\r\n");
  111.         DMA_ADC_TRIG();     //重新触发启动ADC转换
  112.     }
  113.     delay_ms(500);
  114. }
复制代码



HSPWM使用:
  1. #include "app.h"
  2. /*---------------------------------------------------------------------*/
  3. /* --- Web: www.STCAI.com ---------------------------------------------*/
  4. /*---------------------------------------------------------------------*/
  5. #include "APP_HSPWM.h"
  6. #include "AI8051U_Clock.h"
  7. #include "AI8051U_GPIO.h"
  8. #include "AI8051U_PWM.h"
  9. #include "AI8051U_NVIC.h"
  10. /*************    功能说明    **************
  11. 高速高级PWM定时器 PWM1P/PWM1N,PWM2P/PWM2N,PWM3P/PWM3N,PWM4P/PWM4N 每个通道都可独立实现PWM输出,或者两两互补对称输出.
  12. 8个通道PWM设置对应P0的8个端口.
  13. 高级PWM定时器 PWM5,PWM6,PWM7,PWM8 每个通道都可独立实现PWM输出.
  14. 通过P0口上连接的8个LED灯,利用PWM实现呼吸灯效果.
  15. PWM周期和占空比可以根据需要自行设置,最高可达65535.
  16. 下载时, 选择时钟 24MHz (可以在配置文件"config.h"中修改).
  17. ******************************************/
  18. //========================================================================
  19. //                               本地常量声明   
  20. //========================================================================
  21. //========================================================================
  22. //                               本地变量声明
  23. //========================================================================
  24. PWMx_Duty PWMA_Duty;
  25. bit PWM1_Flag;
  26. bit PWM2_Flag;
  27. bit PWM3_Flag;
  28. bit PWM4_Flag;
  29. PWMx_Duty PWMB_Duty;
  30. bit PWM5_Flag;
  31. bit PWM6_Flag;
  32. bit PWM7_Flag;
  33. bit PWM8_Flag;
  34. //========================================================================
  35. //                               本地函数声明
  36. //========================================================================
  37. //========================================================================
  38. //                            外部函数和变量声明
  39. //========================================================================
  40. extern PWMx_Duty PWMA_Duty;
  41. extern bit PWM1_Flag;
  42. extern bit PWM2_Flag;
  43. extern bit PWM3_Flag;
  44. extern bit PWM4_Flag;
  45. extern PWMx_Duty PWMB_Duty;
  46. extern bit PWM5_Flag;
  47. extern bit PWM6_Flag;
  48. extern bit PWM7_Flag;
  49. extern bit PWM8_Flag;
  50. //========================================================================
  51. // 函数: HSPWM_init
  52. // 描述: 用户初始化程序.
  53. // 参数: None.
  54. // 返回: None.
  55. // 版本: V1.0, 2021-05-27
  56. //========================================================================
  57. void HSPWM_init(void)
  58. {
  59.     HSPWMx_InitDefine PWMx_InitStructure;
  60.     InitStruct(PWMx_InitStructure);
  61.     InitStruct(PWMA_Duty);
  62.     InitStruct(PWMB_Duty);
  63.    
  64.     PWMA_Duty.PWM1_Duty = 128;
  65.     PWMA_Duty.PWM2_Duty = 256;
  66.     PWMA_Duty.PWM3_Duty = 512;
  67.     PWMA_Duty.PWM4_Duty = 1024;
  68.     PWMB_Duty.PWM5_Duty = 128;
  69.     PWMB_Duty.PWM6_Duty = 256;
  70.     PWMB_Duty.PWM7_Duty = 512;
  71.     PWMB_Duty.PWM8_Duty = 1024;
  72.     HSPllClkConfig(MCKSEL_HIRC,PLL_96M,0);    //系统时钟选择,PLL时钟选择,时钟分频系数
  73.     PWMx_InitStructure.PWM_EnoSelect= ENO1P|ENO2P|ENO3P|ENO4P;  //输出通道选择,    ENO1P,ENO1N,ENO2P,ENO2N,ENO3P,ENO3N,ENO4P,ENO4N / ENO5P,ENO6P,ENO7P,ENO8P
  74.     PWMx_InitStructure.PWM_Period   = 2047;                     //周期时间,   0~65535
  75.     PWMx_InitStructure.PWM_DeadTime = 0;                        //死区发生器设置, 0~255
  76.     PWMx_InitStructure.PWM_MainOutEnable= ENABLE;               //主输出使能, ENABLE,DISABLE
  77.     PWMx_InitStructure.PWM_CEN_Enable   = ENABLE;               //使能计数器, ENABLE,DISABLE
  78.     HSPWM_Configuration(PWMA, &PWMx_InitStructure, &PWMA_Duty); //初始化PWM通用寄存器,  PWMA,PWMB
  79.     PWMx_InitStructure.PWM_EnoSelect= ENO5P|ENO6P|ENO7P|ENO8P;  //输出通道选择,    ENO1P,ENO1N,ENO2P,ENO2N,ENO3P,ENO3N,ENO4P,ENO4N / ENO5P,ENO6P,ENO7P,ENO8P
  80.     HSPWM_Configuration(PWMB, &PWMx_InitStructure, &PWMB_Duty); //初始化PWM通用寄存器,  PWMA,PWMB
  81.     PWM1_USE_P00P01();
  82.     PWM2_USE_P02P03();
  83.     PWM3_USE_P04P05();
  84.     PWM4_USE_P06P07();
  85.     PWM5_USE_P01();
  86.     PWM6_USE_P03();
  87.     PWM7_USE_P05();
  88.     PWM8_USE_P07();
  89.    
  90.     P0_MODE_OUT_PP(GPIO_Pin_All);   //P0 设置为推挽输出
  91.     P4_MODE_IO_PU(GPIO_Pin_0);      //P4.0 设置为准双向口
  92.     NVIC_PWM_Init(PWMA,DISABLE,Priority_0);
  93.     NVIC_PWM_Init(PWMB,DISABLE,Priority_0);
  94.     P40 = 0;    //打开实验箱LED电源
  95. }
  96. //========================================================================
  97. // 函数: Sample_HSSPI
  98. // 描述: 用户应用程序.
  99. // 参数: None.
  100. // 返回: None.
  101. // 版本: V1.0, 2021-05-27
  102. //========================================================================
  103. void Sample_HSPWM(void)
  104. {
  105.     if(!PWM1_Flag)
  106.     {
  107.         PWMA_Duty.PWM1_Duty++;
  108.         if(PWMA_Duty.PWM1_Duty >= 2047) PWM1_Flag = 1;
  109.     }
  110.     else
  111.     {
  112.         PWMA_Duty.PWM1_Duty--;
  113.         if(PWMA_Duty.PWM1_Duty <= 0) PWM1_Flag = 0;
  114.     }
  115.     if(!PWM2_Flag)
  116.     {
  117.         PWMA_Duty.PWM2_Duty++;
  118.         if(PWMA_Duty.PWM2_Duty >= 2047) PWM2_Flag = 1;
  119.     }
  120.     else
  121.     {
  122.         PWMA_Duty.PWM2_Duty--;
  123.         if(PWMA_Duty.PWM2_Duty <= 0) PWM2_Flag = 0;
  124.     }
  125.     if(!PWM3_Flag)
  126.     {
  127.         PWMA_Duty.PWM3_Duty++;
  128.         if(PWMA_Duty.PWM3_Duty >= 2047) PWM3_Flag = 1;
  129.     }
  130.     else
  131.     {
  132.         PWMA_Duty.PWM3_Duty--;
  133.         if(PWMA_Duty.PWM3_Duty <= 0) PWM3_Flag = 0;
  134.     }
  135.     if(!PWM4_Flag)
  136.     {
  137.         PWMA_Duty.PWM4_Duty++;
  138.         if(PWMA_Duty.PWM4_Duty >= 2047) PWM4_Flag = 1;
  139.     }
  140.     else
  141.     {
  142.         PWMA_Duty.PWM4_Duty--;
  143.         if(PWMA_Duty.PWM4_Duty <= 0) PWM4_Flag = 0;
  144.     }
  145.    
  146.     if(!PWM5_Flag)
  147.     {
  148.         PWMB_Duty.PWM5_Duty++;
  149.         if(PWMB_Duty.PWM5_Duty >= 2047) PWM5_Flag = 1;
  150.     }
  151.     else
  152.     {
  153.         PWMB_Duty.PWM5_Duty--;
  154.         if(PWMB_Duty.PWM5_Duty <= 0) PWM5_Flag = 0;
  155.     }
  156.     if(!PWM6_Flag)
  157.     {
  158.         PWMB_Duty.PWM6_Duty++;
  159.         if(PWMB_Duty.PWM6_Duty >= 2047) PWM6_Flag = 1;
  160.     }
  161.     else
  162.     {
  163.         PWMB_Duty.PWM6_Duty--;
  164.         if(PWMB_Duty.PWM6_Duty <= 0) PWM6_Flag = 0;
  165.     }
  166.     if(!PWM7_Flag)
  167.     {
  168.         PWMB_Duty.PWM7_Duty++;
  169.         if(PWMB_Duty.PWM7_Duty >= 2047) PWM7_Flag = 1;
  170.     }
  171.     else
  172.     {
  173.         PWMB_Duty.PWM7_Duty--;
  174.         if(PWMB_Duty.PWM7_Duty <= 0) PWM7_Flag = 0;
  175.     }
  176.     if(!PWM8_Flag)
  177.     {
  178.         PWMB_Duty.PWM8_Duty++;
  179.         if(PWMB_Duty.PWM8_Duty >= 2047) PWM8_Flag = 1;
  180.     }
  181.     else
  182.     {
  183.         PWMB_Duty.PWM8_Duty--;
  184.         if(PWMB_Duty.PWM8_Duty <= 0) PWM8_Flag = 0;
  185.     }
  186.    
  187.     UpdateHSPwm(PWMA, &PWMA_Duty);
  188.     UpdateHSPwm(PWMB, &PWMB_Duty);
  189. }
复制代码


三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-04-30 09:34:03
已绑定手机

11

主题

44

回帖

299

积分

中级会员

积分
299
发表于 2025-3-25 10:41:37 | 显示全部楼层
erci*** 发表于 2025-3-25 08:29
参考库函数例程APP_DMA_AD和APP_HSPWM

AI8051U传统风格库函数例程包发布-持续更新, 20250214 - 软件库函 ...

您好,感谢您的回复。没看出来这是PWM周期触发DMA ADC,我只需要知道PWM中断时是否可以自动触发DMA ADC。AI8051U外设有没有这个功能。

点评

PWM周期中断只能触发普通ADC,不能触发DMA_ADC DMA_ADC只能通过软件手动触发  详情 回复 发表于 2025-3-25 10:58
你在PWM中断中触发DMA采集就行?外设功能都是有的,需要自定义业务逻辑  详情 回复 发表于 2025-3-25 10:50
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:163
  • 最近打卡:2025-05-02 13:26:59
已绑定手机

56

主题

1319

回帖

2942

积分

荣誉版主

无情的代码机器

积分
2942
发表于 2025-3-25 10:50:24 | 显示全部楼层
hhhh*** 发表于 2025-3-25 10:41
您好,感谢您的回复。没看出来这是PWM周期触发DMA ADC,我只需要知道PWM中断时是否可以自动触发DMA ADC。A ...

你在PWM中断中触发DMA采集就行?外设功能都是有的,需要自定义业务逻辑
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

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

110

主题

2219

回帖

5454

积分

版主

积分
5454
发表于 2025-3-25 10:58:34 | 显示全部楼层
hhhh*** 发表于 2025-3-25 10:41
您好,感谢您的回复。没看出来这是PWM周期触发DMA ADC,我只需要知道PWM中断时是否可以自动触发DMA ADC。A ...

PWM周期中断只能触发普通ADC,不能触发DMA_ADC
DMA_ADC只能通过软件手动触发
回复 支持 1 反对 0

使用道具 举报 送花

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

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2025-3-25 11:26:14 | 显示全部楼层

PWM自动触发ADC在HSPWM也同样有效。

ADC只有一个,任何时候只能转换一路ADC,多路ADC要切换通道来实现,但由于转换速度快,宏观上是并行的。比如使用周期为50us(频率20KHz)的PWM自动触发ADC,ADC完成后进入中断,再触发后续的通道转换,比如有4个通道,每个通道转换时间为10us,这样40us就可以完成4个通道的转换。

回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-04-30 09:34:03
已绑定手机

11

主题

44

回帖

299

积分

中级会员

积分
299
发表于 2025-3-25 23:08:50 | 显示全部楼层
梁*** 发表于 2025-3-25 11:26
PWM自动触发ADC在HSPWM也同样有效。

ADC只有一个,任何时候只能转换一路ADC,多路ADC要切换通道来实现, ...

感谢,明白了。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 20:52 , Processed in 0.126591 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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