打印

GD32F 注入组超过了怎么处理

[复制链接]
769|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ADC, dc, AD, DMA, DM
有4路最大注入组,我全用掉了
现在还有3路只能规则组,但规则组能否不用DMA方式,
现在用的最傻办法实现的:每次初始化一个ADC,再读,完成3个ADC读取。

还有其他方式吗?

使用特权

评论回复
沙发
xdqfc| | 2020-7-20 09:10 | 只看该作者
我是用TIME1触发ADC的,在ADC中断里面修改ADC_ISQ的,譬如第一次中断ADC_ISQ=4<<5|2<<10|3<<15|3<<20;第二次中断就修改为ADC_ISQ=7|8<<5|9<<10|17<<15|3<<20;第三次,再改成跟第一次一样ADC_ISQ=4<<5|2<<10|3<<15|3<<20;第四次改成跟第二次一样,ADC_ISQ=7|8<<5|9<<10|17<<15|3<<20;如此反复,读取的时候注意一下就可以了。不需要每次都初始化,就切换一下通道。

使用特权

评论回复
板凳
sonicll| | 2020-7-20 09:12 | 只看该作者
本帖最后由 sonicll 于 2020-7-20 09:15 编辑

你用的是什么型号,如果是有两个ADC的型号,可以用另一个ADC的注入组。
如果只有1个ADC,可以在注入组采样完成中断里再配置另外3个注入通道,这样前4个和后3个轮流采样

使用特权

评论回复
地板
xdqfc| | 2020-7-20 09:13 | 只看该作者
规则组加DMA,打死我也不会用,万一DMA错位,后果不堪设想,遇到很多次了。

使用特权

评论回复
5
sonicll| | 2020-7-20 09:24 | 只看该作者
xdqfc 发表于 2020-7-20 09:13
规则组加DMA,打死我也不会用,万一DMA错位,后果不堪设想,遇到很多次了。
...

ADC的DMA错位很有可能是因为反复写入CTL1寄存器造成的,CTL1寄存器的bit0,ADC使能位,在这一位已经是1的情况下,保持CTL1寄存器其他位不变,给bit0再写一次1,也会触发一次规则采样,手册里有说明,这个功能跟ST的一样,多触发一次,就会导致DMA错位

使用特权

评论回复
6
xdqfc| | 2020-7-20 11:46 | 只看该作者
sonicll 发表于 2020-7-20 09:24
ADC的DMA错位很有可能是因为反复写入CTL1寄存器造成的,CTL1寄存器的bit0,ADC使能位,在这一位已经是1的 ...

我当时倒不是这么个情况,当时是以TIME2的捕获端口对433M无线电编码信号进行解码,因为对时间要求有点严格,就设定了高优先级,那问题来了,只要有有效信号来且我开始解码信号(可能会花点时间的缘故吧),ADC这边就有错位的发生,这就很致命的了,后面只好改成注入组,那个DMA直接不敢用了。

使用特权

评论回复
7
〽️〽️〽️|  楼主 | 2020-7-20 11:49 | 只看该作者
sonicll 发表于 2020-7-20 09:12
你用的是什么型号,如果是有两个ADC的型号,可以用另一个ADC的注入组。
如果只有1个ADC,可以在注入组采样 ...

GD32F130G8 不区分ADC0 ADC1组,好像只能ADC  一共4个最大注入都用了

使用特权

评论回复
8
〽️〽️〽️|  楼主 | 2020-7-20 11:50 | 只看该作者
xdqfc 发表于 2020-7-20 09:10
我是用TIME1触发ADC的,在ADC中断里面修改ADC_ISQ的,譬如第一次中断ADC_ISQ=4

我来试下看效果,感谢!

使用特权

评论回复
9
〽️〽️〽️|  楼主 | 2020-7-20 11:51 | 只看该作者
xdqfc 发表于 2020-7-20 09:13
规则组加DMA,打死我也不会用,万一DMA错位,后果不堪设想,遇到很多次了。
...

嗯嗯,就是DMA模式 搞了170多个小时,发现不会驾驭它,会有偶偶错误,所以想避开

使用特权

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

本版积分规则

51

主题

375

帖子

2

粉丝