STM32F103基于Simulink自动代码生成之ADC采集

cube配置,目前按网上说的多通道DMA+TIM中断触发,没法实现,Simulink生成的代码一直卡在DMA中断,而其他中断进不去,没查到原因。

取消DMA,用ADC中断,多通道的还是有问题,Simulink生成的代码中断可以正常进,但ADC采集的值不对,没查到原因。

最终只能用单通道,ADC中断,不连续采集,不用DMA,测试了ADC1和ADC2同时用的话,是可以的,采集的值没问题。本文就是采用的此方式。

如果有大佬成功实现过了DMA+TIM中断触发的simulink代码生成,欢迎指导小弟~~~

也欢迎在做STM32自动代码生成的童鞋与我交流~~

QQ/Wechat:9535909472

目录

CUBE配置:

时钟树配置:(最高时钟只有12M)

ADC配置:

Simulink模型建立:

测试效果:

附件

 

 


 

CUBE配置:

时钟树配置:(最高时钟只有12M)

5c0e675bf78c7221ec31a7553549ac8a.png

ADC配置:

d601b63e8d5200aada9d196948f53d61.png

Mode Independent mode ADC1 和ADC2 工作在独立模式(如果只有ADC1的话,只能选独立模式)

Data Alignment        ADC 数据向左边对齐还是向右边对齐(默认右对齐)

Scan Conversion Mode Disable 是否开启扫描模式(如果是多通道的话,只能选开启,单通道只能选不开启)

Continuous Conversion Mode  Disable   是否开启连续转换(此处选择不开启,开启后会导致其他中断进不去)

Discontinuous Conversion Mode  Disable 是否开启单次转换(单通道只能Disable,多通道可以选择Enable)

ADCs_Regular_ConversionMode (规则通道转换模式)

Enable Regular Conversions      ENABLE启用定期转换

Number of Conversion         ADC转换的通道数量 1 (单通道只能选择为1)

External Trigger Conversion Source    by software 软件触发转换(可以选择TIM中的中断触发,但是Simulink中生成完的代码有问题,最终还是没用中断和DMA)

Rank 只有通道为2个以上时才可以开启扫描模式

Channel                ADC转换通道 10

Sampling Time           ADC采样周期 1.5cyces

ADC_Injected_ConversionMode        (注入通道转换模式)暂时没用到。

WatchDog 暂时没用到。

转换时间=采样时间+12.5个周期 = 14个周期

由时钟树可知,ADC的频率为12M,得到转换时间为 14/12M = 1.17us

打开ADC中断:

ceea6bcab03180144b8d63eeaff0978e.png

ADC2配置和ADC1一样,此处不再叙述。

没有用DMA,所以CUBE的配置就这些。本工程是在之前一篇文章的基础上改的,其他配置参考上一篇文章。

Simulink模型建立:

模块库中找到ADC模块,我是将他放到500ms定时和1s定时中,一个ADC1,一个ADC2(配置同1)

此处的模块只负责读取ADC采样的值,采集和转换是一直在中断进行的。

367cf46a82654c13ee5eec67431f8b98.png

我这里配置的是通道ADC1-通道10

9b2e3af60abc69ee2255724c43ee9d5e.png

CUBE中配置后,此处的中断是打开的,且不能修改。(关闭中断只能在cube中配置)

f309cf4714e82b2b3ec008cfe65edfdc.png

输入信号为12位精度的ADC值范围0-4095,电压范围0-3.3(本次用的开发板adc采集的电压最高只能到3.3v,如果要测5V,需要改硬件)

ba617cf57e39c7f068e5892505bb9399.png

CHAR 转换模块在ADC Demo中有,如果找不到的话,可以参考我的工程。

ADC2和ADC1类似,只是放到了1s定时中断里面,然后在转换模块中加了个2,用于串口打印时区分。

到此模型建立完成,Ctrl+B生成代码,打开工程,编译,下载。

测试效果:

其他中断还可以正常触发,ADC采集也可以正常采集电压。

ADC1采集通道接电源,采集电压3.24v,ADC2采集通道接地,采集电压0V

083aa534d3d83177ba7889fac8bf1c71.png

ADC2采集通道接电源,采集电压3.25v,ADC1采集通道接地,采集电压0V

8e3b54a7a606463647b276e376b72c74.png

附件

CUBE工程,Simulink模型及生成的代码工程

 

 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赞哥哥s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值