我是靠谱客的博主 昏睡宝贝,最近开发中收集的这篇文章主要介绍STM32F103基于Simulink自动代码生成之ADC采集CUBE配置:Simulink模型建立:测试效果:附件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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模型及生成的代码工程

 

 

最后

以上就是昏睡宝贝为你收集整理的STM32F103基于Simulink自动代码生成之ADC采集CUBE配置:Simulink模型建立:测试效果:附件的全部内容,希望文章能够帮你解决STM32F103基于Simulink自动代码生成之ADC采集CUBE配置:Simulink模型建立:测试效果:附件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部