当前位置:首页 > 工业园区 >foc双电阻采样(双电阻电流采样)

foc双电阻采样(双电阻电流采样)

概述

SAR ADC 支持CPU 触发、PWM 触发和EXTIO 触发。通过在SAR ADC CTRL 寄存器中设置TRIG,该设置对所有选定通道都有效。当不同通道需要不同的触发方式时,需要按采样间隔配置TRIG位进行切换。

foc双电阻采样(双电阻电流采样)

电机框架结构:ADC(双电阻采样)

PWM触发操作方法如下:

PWM配置需要的模式,将SARADC的CTRL寄存器中的TRIG模式设置为PWM触发。每个PWM 对应一个ADTRG 寄存器值。当PWM计数到指定值时,即可触发ADC进行采样。 PWM可以在任何模式下触发ADC。每个通道输出独立的ADC触发信号,每个周期可设置一个ADC触发点。每个PWM只输出1个触发信号,不区分A、B触发。

具体配置方法如下(以ADTRG0A0为例):

1. PWM配置所需模式

2. 配置PWM模块ADTRG0A0值。该值就是触发延迟时间。中心对称模式下,从周期开始开始记录前半周期,后半周期的采样点与前半周期的中心对称。

3. 使能ADTRG0A0寄存器的EN位

4. 配置ADC寄存器中TRIG寄存器A0的相应位,确认通道没有被阻塞。

5. 使能PWM 模块的EN 位。当计数值达到ADTRG0A0设置值时,ADCCTRL寄存器中选择的通道(CHx)被触发进行采样。采样完成后,将产生EOC标志位并产生ADC中断。

程序中的配置如下(PWM触发ADC转换):

//ADC初始化

无效SVPWM_ADC_Init(无效)

{

ADC_initStruct ADC_initStruct;

PORT_Init(PORTA, PIN8, PORTA_PIN8_ADC0_CH7, 0); //PA.8=> ADC0.CH7

PORT_Init(PORTB, PIN9, PORTB_PIN9_ADC0_CH8, 0); //PB.9=》ADC0.CH8

ADC_initStruct.clk_src=ADC_CLKSRC_HRC_DIV8;

ADC_initStruct.clk_div=8;

ADC_initStruct.ref_src=ADC_REFSRC_VDD; //参考电压选择VDD

ADC_initStruct.channels=ADC_CH7 | ADC_CH8; //通道初始化

ADC_initStruct.samplAvg=ADC_AVG_SAMPLE8;

ADC_initStruct.trig_src=ADC_TRIGGER_PWM0; //设置PWM0触发ADC转换

ADC_initStruct.Continue=0;//非连续模式,即单次模式

ADC_initStruct.EOC_IEn=ADC_CH8; //设置CH8为中断

ADC_initStruct.OVF_IEn=0;

ADC_Init(ADC0, ADC_initStruct); //配置ADC

ADC0-》CHSEL=((ADC_CH8《》ADC_CHSEL_PWM_Pos)|(ADC_CH7《》ADC_CHSEL_PWM_Pos)); //设置PWM触发CH7和CH8通道转换

ADC_Open(ADC0);//使能ADC

}

//ADC中断

无效ADC0_Handler(无效)

{

ADC_IntEOCClr(ADC0, ADC_CH8); //清除中断

while (!ADC_IsEOC(ADC0, ADC_CH8)); //等待通道8转换完成

ADC_Read(ADC0, ADC_CH7); //读取ADC值

ADC_Read(ADC0, ADC_CH8);

}

具体详情请登录华信微特官方网站:http://www.synwit.cn/

编辑:jq

最新资讯

推荐资讯