打印
[STM32F2]

STM32 PMSM FOC V3.4 库部分问题请教

[复制链接]
2447|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wtch519361|  楼主 | 2015-11-9 15:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32 ADC是12位的,采样得到的电流经过电阻,然后放大、拉高电压输入到ADC的输入端,但是程序中没有相关的变换,我看程序中R3F2XX_GetPhaseCurrents()这个函数中只是将采样得到的AD值经过校正后直接传递给Clerke变换,并且我也看不懂  
    wAux = (int32_t)(ADC1->JDR1);
    wAux *= 2;
    wAux = (int32_t)(pDVars_str->wPhaseAOffset) - wAux;
这里面的wAux第二步乘以2是什么意思
我对程序的理解应该是这样,采样到的AD值应该在0-4096之间,而2048对应电流0A,这样可以就可以把实际电流和采到的AD值建立一次函数的关系,我可以通过采到的AD值求得实际电流值,然后将实际电流值转换成IQ(15)的值带到Clarke中进行计算,但是我不知道ST这个程序是怎么做的,哪位用过的朋友帮我解释一下,我看了好久了,看不明白啊,:'(
沙发
643757107| | 2015-11-9 16:22 | 只看该作者
乘以2实际上相当于左移一位。另外他们这个处理的方法,结果对吗?如果对,楼主就不要太纠结内部了。好多库函数写的就是很拉轰。

使用特权

评论回复
板凳
wtch519361|  楼主 | 2015-11-9 16:47 | 只看该作者
643757107 发表于 2015-11-9 16:22
乘以2实际上相当于左移一位。另外他们这个处理的方法,结果对吗?如果对,楼主就不要太纠结内部了。好多库 ...

很拉轰是啥意思?用他们的实验结果有问题,主要是我们使用硬件结构跟他们的不一样(我们之前有现成其他平台的硬件),我们硬件是使用两个电阻采样的,所以我需要把他的搞懂了,然后改成适应我们的平台,还麻烦您不吝赐教,谢谢

使用特权

评论回复
地板
wtch519361|  楼主 | 2015-11-9 16:49 | 只看该作者
wtch519361 发表于 2015-11-9 16:47
很拉轰是啥意思?用他们的实验结果有问题,主要是我们使用硬件结构跟他们的不一样(我们之前有现成其他平 ...

st库电流采样的时候是判断不同扇区才不同的两相,我们是直接采U、V相,W相通过计算获得就可以了,比较简单,但是精度会差一点

使用特权

评论回复
5
643757107| | 2015-11-9 18:16 | 只看该作者
wtch519361 发表于 2015-11-9 16:47
很拉轰是啥意思?用他们的实验结果有问题,主要是我们使用硬件结构跟他们的不一样(我们之前有现成其他平 ...

那就结合你们自己的板子和电路,按照自己的规则写代码啊,不要总是认为官方的就对,他们也是人写的,也会出错。

使用特权

评论回复
6
android2| | 2015-11-9 20:09 | 只看该作者
楼主最好找找用到的变量是怎么定义的,比如wAux

使用特权

评论回复
7
wtch519361|  楼主 | 2015-11-10 08:44 | 只看该作者
android2 发表于 2015-11-9 20:09
楼主最好找找用到的变量是怎么定义的,比如wAux

就是uint32整型变量,看不出来的

使用特权

评论回复
8
wtch519361|  楼主 | 2015-11-10 08:46 | 只看该作者
643757107 发表于 2015-11-9 18:16
那就结合你们自己的板子和电路,按照自己的规则写代码啊,不要总是认为官方的就对,他们也是人写的,也会 ...

我们想基于stm32 foc库开发可以缩短开发周期,不曾想到这么不好理解...V3.4的库你有用过吗?

使用特权

评论回复
9
feihufuture| | 2015-11-10 08:53 | 只看该作者
不错,ST MCU板块属所有板块中最活跃的,广告最少的!

使用特权

评论回复
10
643757107| | 2015-11-10 17:26 | 只看该作者
可以使用HAL库试试啊,这个是哪个系列的?
==============================================================================
  [..]
  (#)Initialize the ADC low level resources by implementing the HAL_ADC_MspInit():
       (##) Enable the ADC interface clock using __HAL_RCC_ADC_CLK_ENABLE()
       (##) ADC pins configuration
             (+++) Enable the clock for the ADC GPIOs using the following function:
                   __HAL_RCC_GPIOx_CLK_ENABLE()  
             (+++) Configure these ADC pins in analog mode using HAL_GPIO_Init()
       (##) In case of using interrupts (e.g. HAL_ADC_Start_IT())
             (+++) Configure the ADC interrupt priority using HAL_NVIC_SetPriority()
             (+++) Enable the ADC IRQ handler using HAL_NVIC_EnableIRQ()
             (+++) In ADC IRQ handler, call HAL_ADC_IRQHandler()
       (##) In case of using DMA to control data transfer (e.g. HAL_ADC_Start_DMA())
             (+++) Enable the DMAx interface clock using __HAL_RCC_DMAx_CLK_ENABLE()
             (+++) Configure and enable two DMA streams stream for managing data
                 transfer from peripheral to memory (output stream)
             (+++) Associate the initialized DMA handle to the CRYP DMA handle
                 using  __HAL_LINKDMA()
             (+++) Configure the priority and enable the NVIC for the transfer complete
                 interrupt on the two DMA Streams. The output stream should have higher
                 priority than the input stream.
                       
    *** Configuration of ADC, groups regular/injected, channels parameters ***
  ==============================================================================
  [..]
  (#) Configure the ADC parameters (resolution, data alignment, ...)
      and regular group parameters (conversion trigger, sequencer, ...)
      using function HAL_ADC_Init().

  (#) Configure the channels for regular group parameters (channel number,
      channel rank into sequencer, ..., into regular group)
      using function HAL_ADC_ConfigChannel().

  (#) Optionally, configure the injected group parameters (conversion trigger,
      sequencer, ..., of injected group)
      and the channels for injected group parameters (channel number,
      channel rank into sequencer, ..., into injected group)
      using function HAL_ADCEx_InjectedConfigChannel().

  (#) Optionally, configure the analog watchdog parameters (channels
      monitored, thresholds, ...) using function HAL_ADC_AnalogWDGConfig().

  (#) Optionally, for devices with several ADC instances: configure the
      multimode parameters using function HAL_ADCEx_MultiModeConfigChannel().

使用特权

评论回复
11
643757107| | 2015-11-10 17:27 | 只看该作者
上面是采用HAL库的操作流程,先使用什么函数进行初始化,再使用什么函数调用方法。

使用特权

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

本版积分规则

3

主题

10

帖子

0

粉丝