在线时间218 小时
UID2100041
ST金币0
蝴蝶豆0
注册时间2014-6-8
金牌会员
- 最后登录
- 2020-12-6
|
楼主 |
发表于 2014-6-21 16:50:11
|
显示全部楼层
a0a.1 0b0c
回复:有关基于stm32的PMSM的FOC控制中u8 SVPWMEOCEvent(void)的一个问题
回复第 15 楼 于2014-06-16 18:30:58发表:
电机控制的时候, 你检查参数
找到问题的答案了,是103的adc的断续模式在有两个通道被转换,转换序列长度设置为1的时候,只有第二个通道转换完成后才进中断,第一个转换完成后不进入中断,与051的adc不一样:
103的:
注入组
此模式通过设置ADC_CR1寄存器的JDISCEN位激活。在一个外部触发事件
后,给模式按序转换ADC_JSQR寄存器中选择的序列。
一个外部触发信号可以启动ADC_JSQR寄存器选择的下一个通道序列的转换,
直到序列中所有的转换完成为止。总的序列长度由ADC_JSQR寄存器的JL[1:0]
位定义。
例子:
n=1,被转换的通道= 1,2,3
第一次触发:通道1被转换
第二次触发:通道2被转换
第三次触发:通道3被转换,并且产生EOC和JEOC事件
第四次触发:通道1被转换
注意:1 当完成所有注入通道转换,下个触发启动第1个注入通道的转换。在上述
例子中,第四个触发重新转换第1个注入通道1。
2 不能同时使用自动注入和间断模式。
3 必须避免同时为规则和注入组设置间断模式。间断模式只能作用于一组转
051的:
12.5.1 断续模式 (DISCEN)
该模式由设置ADC_CFGR1寄存器中的DISCEN位来开启。
在这个模式(DISCEN=1)下,需要硬件或软件的触发事件去启动定义在一个序列中的每次转换。
相反,DISCEN=0时, 一个硬件或软件的触发事件就可以启动定义在一个序列中的所有转换。
例如:
●DISCEN=1, 需要转换的通道为: 0, 3, 7, 10
-1st 触发:通道0被转换且一个EOC事件产生
-2nd触发:通道3被转换且一个EOC事件产生
-3rd触发:通道7被转换且一个EOC事件产生
-4th触发:通道10被转换且产生EOC和EOS事件
-5th触发:通道0被转换且一个EOC事件产生
-6th触发:通道3被转换且一个EOC事件产生
●DISCEN=0, 需要转换的通道为: 0, 3, 7, 10
-1st 触发:整个完整的序列转换:依次为通道0, 3, 7和10。
每次转换产生一个EOC事件,到最后一通道还产生一个EOS事件。
-任何触发事件都会重新开始完整的序列转换。
注: 让ADC同时处于断续转换模式和连续转换模式是不可能的事情,在这种情况下(DISCEN=1,
CONT=1),其表现为连续模式禁止。
|
|