打印
[LKS32 软件]

MCPWM触发ADC采样,如何计算ADC采样频率?

[复制链接]
767|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 punan2010 于 2023-3-23 19:24 编辑

根据lks32mc08x_demo_prj\4.ADC\ADC_MCPWM_Trigger示例程序:
#define MCU_MCLK                       (96000000LL)       /* PWM模块运行主频 */
#define PWM_MCLK                       ((u32)MCU_MCLK)    /* PWM模块运行主频 */
#define PWM_PRSC                       ((u8)0)            /* PWM模块运行预分频器 */
#define PWM_FREQ                       ((u16)16000)       /* PWM斩波频率 */
/* 电机控制PWM 周期计数器值 */
#define PWM_PERIOD                     ((u16) (PWM_MCLK / (u32)(2 * PWM_FREQ *(PWM_PRSC+1))))
/* PFC控制PWM 周期计数器值 */
#define PFC_PERIOD                     ((u16) (PWM_MCLK / (u32)(2 * PFC_FREQ *(PWM_PRSC+1))))

MCU、PWM模块运行主频为96MHz,PWM斩波频率为16KHz,电机控制PWM周期计数器值PWM_PERIOD = 96000000/(2*16000)=3000;

void MCPWM_init(void)
{
    MCPWM_InitTypeDef MCPWM_InitStructure;
    MCPWM_StructInit(&MCPWM_InitStructure);

    MCPWM_InitStructure.CLK_DIV = PWM_PRSC;                   /* MCPWM时钟分频设置 */
    MCPWM_InitStructure.MCLK_EN = ENABLE;                     /* 模块时钟开启 */
    MCPWM_InitStructure.MCPWM_Cnt_EN = ENABLE;                /* 主计数器开始计数使能开关 */

    MCPWM_InitStructure.MCPWM_PERIOD = PWM_PERIOD;                /* 计数周期设置即MCPWM输出周期*/
    MCPWM_InitStructure.TriggerPoint0 = (u16)(10 - PWM_PERIOD);   /* MCPWM_TMR0 ADC触发事件T0 设置 */
    MCPWM_InitStructure.TriggerPoint1 = (u16)(1000 - PWM_PERIOD); /* MCPWM_TMR1 ADC触发事件T1 设置 */
    MCPWM_InitStructure.TriggerPoint2 = (u16)(PWM_PERIOD - 1000); /* MCPWM_TMR0 ADC触发事件T0 设置 */
    MCPWM_InitStructure.TriggerPoint3 = (u16)(PWM_PERIOD - 1);    /* MCPWM_TMR1 ADC触发事件T1 设置 */
    MCPWM_Init(&MCPWM_InitStructure);
}

MCPWM_InitStructure.TriggerPoint0 = 10 -3000 = -2990;
MCPWM_InitStructure.TriggerPoint1 = 1000 - 3000 = -2000;
MCPWM_InitStructure.TriggerPoint2 = 3000 - 1000 = 2000;
MCPWM_InitStructure.TriggerPoint3 = 3000 - 1 = 2999;

ADC使用1段触发模式
ADC_InitStructure.Trigger_Mode = ADC_1SEG_TRG;               /*ADC采样1段模式*/

请问如何计算出ADC采样频率?

在ADC0中断处理函数中反转LED1电平,使用示波器量出LED1反转频率为304kHz。
void ADC0_IRQHandler(void)
{
Invers_GPIO(GPIO0,GPIO_Pin_6);
}


PWM波形频率为16KHz,ADC0中断处理函数调用的频率是304KHz*2=608Khz.
他们之间是什么关系?

使用特权

评论回复
沙发
80后小老头| | 2023-3-26 11:51 | 只看该作者
题目太难答不上

使用特权

评论回复
板凳
鸥芯电驱港港| | 2023-3-26 20:19 | 只看该作者

楼主清除ADC采用完成中断标志位没,如果没有软件清除会直接进入ADC中断。看楼主配置ADC触发时MCPWM触发一段采用,那么就是一个MCPWM周期触发一次ADC采用,所以ADC采用频率与MCPWM频率应该是一致的16K。

使用特权

评论回复
地板
tpgf| | 2023-4-15 15:32 | 只看该作者
ADC每次采样转换的总时间是:采样时间+转换时间

使用特权

评论回复
5
paotangsan| | 2023-4-15 15:45 | 只看该作者
楼主的adc的时钟是设置成什么了牙

使用特权

评论回复
6
renzheshengui| | 2023-4-15 16:00 | 只看该作者
时钟啊 转换频率啊 采样周期的设定啊 都有关系的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝