打印
[STM32F1]

【求助】关于stm32ADC同步注入模式配置的疑问

[复制链接]
9248|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在2.0版的foc电机库中,芯片采电流的方案是如下配置ADC的
/* ADC1 配置 ------------------------------------------------------*/
  ADC_StructInit(&ADC_InitStructure);
ADC_InitStructure.ADC_Mode = ADC_Mode_InjecSimult;        //同步注入模式
  ADC_InitStructure.ADC_ScanConvMode = ENABLE;        //使用扫描模式
  ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;        //单次转换模式
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;        //转换由软件而不是外部触发启动
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Left;        //数据左对齐
  ADC_InitStructure.ADC_NbrOfChannel = 1;        //规则转换通道数
  ADC_Init(ADC1, &ADC_InitStructure);

ADC1配置了2个注入通道,ADC2的配置和通道数也是一样的
问题来了:看参考手册中的描述,单次转换模式时,如果开启转换结束中断,那么在转换完一个通道后就会触发一次中断
而同步注入模式,是在ADC1或ADC2转换完各自通道后才触发转换结束的中断
而foc控制是需要ADC工作在同步注入模式的,即在采集完2个电流和一个电源电压后进入中断进行计算。但以上配置不就前后矛盾吗?

还有在传感器校准的过程中
/* ADC 用于读取电流通道读取零电流ADC值 */
  for(bIndex=NB_CONVERSIONS; bIndex !=0; bIndex--)
  {
    while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_JEOC)) { }        //等待注入通道转换完成
  
    hPhaseAOffset += (ADC_GetInjectedConversionValue(ADC1,ADC_InjectedChannel_1)
                                                         >>ADC_RIGHT_ALIGNMENT);
    hPhaseBOffset += (ADC_GetInjectedConversionValue(ADC1,ADC_InjectedChannel_2)
                                                         >>ADC_RIGHT_ALIGNMENT);  
    /* 清除 ADC1 JEOC 挂起位 */
    ADC_ClearFlag(ADC1, ADC_FLAG_JEOC);        
    ADC_SoftwareStartInjectedConvCmd(ADC1,ENABLE);
  }
前面配置的数据为左对齐,但校准过程中采集数据确是右移ADC_RIGHT_ALIGNMENT位,而且ADC_RIGHT_ALIGNMENT的数值为3,为啥不是4?
沙发
小浣熊| | 2014-9-3 17:00 | 只看该作者
不是很懂,我觉得这种情况要多调试,肯定可以找到你满意的结果的。。

使用特权

评论回复
板凳
picasso101| | 2014-9-25 16:08 | 只看该作者
看看他的技术应用文档,有讲到这个

使用特权

评论回复
地板
天四明| | 2015-3-13 13:00 | 只看该作者
关于电机库我也略看了一点点,对于你的疑问做如下简答,如有不合理之处还望斧正。
1.库中的adc1和adc2都是2个注入通道,这就保证了adc1和adc2的同时转换完成触发中断,应该是有一个通道既是adc1的通道,也是adc2的通道,这样也是可以的,只要只要这2个相同的通道对应的序列不一样即可。
2.左对齐数据右移3,按理数据寄存器是16位的,adc转换数据是12位的,左对齐的话要右移4位才可以。但是对于注入组的左对齐其数据并不是占据着15到4这12位,而是14到3这12位,最高位保留,参见下图,这样右移3位也就可以理解了。
希望对你有帮助。

201405081952487.png (38.82 KB )

201405081952487.png

使用特权

评论回复
5
haoyang877| | 2015-10-20 19:13 | 只看该作者
天四明 发表于 2015-3-13 13:00
关于电机库我也略看了一点点,对于你的疑问做如下简答,如有不合理之处还望斧正。
1.库中的adc1和adc2都是2 ...

恩,感觉你说的很有道理

使用特权

评论回复
6
wahahaheihei| | 2015-10-20 21:49 | 只看该作者
MX不能配置那个吗?我看最近大家都在用cubeMX配置。

使用特权

评论回复
7
贪玩不回家| | 2017-10-29 11:11 | 只看该作者
bIndex   NB_CONVERSIONS  分别是什么意思啊

使用特权

评论回复
8
987426| | 2017-12-17 15:09 | 只看该作者
你好,楼主。你的adc同步注入模式用于foc解决了么?能讲解一下么

使用特权

评论回复
9
放他一马吧| | 2018-12-24 11:35 | 只看该作者
天四明 发表于 2015-3-13 13:00
关于电机库我也略看了一点点,对于你的疑问做如下简答,如有不合理之处还望斧正。
1.库中的adc1和adc2都是2 ...

非常感谢。想知道这个图是哪个手册里面的,想详细学习一下。

使用特权

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

本版积分规则

1

主题

9

帖子

1

粉丝