【嵌入式】STM32+STM32CubeMX调试AD7606记录

文章目录一、定时器PWM的产生二、外部中断的捕获三、SPI四、测试
AD7606是16位多通道同步采样芯片,可以处理±10V和±5V的真双极性输入信号,并最大支持200kSPS的吞吐速率采样,特别适合于电力系统中正弦波电压电流的采样。
别看AD7606是64-LQFP的封装,多达64脚,但其配置、使用非常方便。AD7606不用通过读写寄存器进行工作状态的配置,直接通过外部引脚的上下拉来进行配置,一般工程应用中主要涉及以下几个配置:
1.基准源选择;
2.并行、串行通讯选择;
3.测量范围选择;
4.过采样选择。
由于项目中并不需要高达200kSPS的采样率,故选择了一定倍数的过采样、串行通讯方式(其实就是AD7606所谓从机的SPI通讯)。以上4个配置全都是通过控制AD7606的外部引脚高低电平来实现的,因此可以在画板时通过上下拉定死,也可以在画板时将相应的配置引脚连接单片机的GPIO口,从而可以根据实际使用需要进行灵活配置。
关于以上四个配置,AD7606数据手册上已经做了明确说明,在此不做赘述:
【嵌入式】STM32+STM32CubeMX调试AD7606记录
【嵌入式】STM32+STM32CubeMX调试AD7606记录
【嵌入式】STM32+STM32CubeMX调试AD7606记录
【嵌入式】STM32+STM32CubeMX调试AD7606记录
无论使用过固定电平的方式,还是单片机GPIO口控制电平的方式配置好AD7606的工作状态后,就可以编程驱动其进行采样的。由于其工作模式为拉低CONVST引脚,转换期间BUSY引脚置高,转换完成后BUSY引脚拉低,此时可以通过串口从AD7606中读取转换结果,时序图如下所示:
【嵌入式】STM32+STM32CubeMX调试AD7606记录
因此,一种合理的驱动方式为:通过定时器产生一定频率、一定占空比的PWM来驱动CONVST引脚进行稳定的周期转换,并将BUSY引脚连接至单片机的一个外部下降沿中断,在中断中进行串口读数据。
那么对于单片机,需要用到3个基本外设:
1.定时器;
2.外部中断;
3.SPI
对于STM32系列的单片机,通过STM32CubeMX配置好这几个外设后,就可以完成AD7606的驱动了,下面对这三点进行一一说明。

一、定时器PWM的产生

比如我需要6400SPS的采样率,即一秒采样6400次,那么我需要产生6400Hz的PWM信号,而占空比的设置要结合AD7606手册中的t2来设置。
【嵌入式】STM32+STM32CubeMX调试AD7606记录
理想中产生的PWM波形应该像下图一样,一开始为高电平,定时器计数达到比较值后反转为低电平,而这个窄窄的低电平就是AD7606的转换开始信号,其低电平时间要大于25ns。
【嵌入式】STM32+STM32CubeMX调试AD7606记录
因此,在STM32CubeMX中选一个定时器,并将其中一个通道配置为PWM模式,如下图
【嵌入式】STM32+STM32CubeMX调试AD7606记录
然后对PWM的频率及占空比进行设置,如下图所示。由于我在时钟树设置时设置了160MHz的主频,那么挂载在AHB1上的TIM3默认运行主频为80MHz。故在第一个红框处进行100分频后,设置向上计数125次为一个PWM周期,那么其频率就是80MHz/100/125=6400Hz。
而对于占空比,通过下边红框进行设置,设置为124,且极性为高电平。124从何而来?刚刚已经配置了PWM的频率为6400Hz了,那么其周期为1/6400=156.25us,而这156.25us又被分成了刚刚配置的125个小段,那么当占空比设置为124时,将有124个小段输出高电平,最后一个小段极性反转成低电平。其低电平时间即为156.25us/125=1.25us,满足手册中大于25ns的要求。这样一来,该引脚就可以按输出上图所示的PWM了。
【嵌入式】STM32+STM32CubeMX调试AD7606记录

二、外部中断的捕获

这个比较简单,选择一个引脚,如下图配置为外部中断。
【嵌入式】STM32+STM32CubeMX调试AD7606记录
然后到configuration中配置其为下降沿触发即可。
【嵌入式】STM32+STM32CubeMX调试AD7606记录

三、SPI

SPI的配置也较为简单,需要注意四点:
1.SPI的工作模式;
2.数据大小;
3.时钟信号速率;
4.结合AD7606手册中的时序。
如图配置SPI2,使用软片选,即随便选一个GPIO口为推挽输出作为CS引脚,在需要SPI通讯前进行下拉,通讯完进行上拉即可。
【嵌入式】STM32+STM32CubeMX调试AD7606记录
在configuration中做如下配置。因为AD7606一次传输16位数据,且高位在前,故配置为16bits、MSB;

【嵌入式】STM32+STM32CubeMX调试AD7606记录

同时,根据下图所示的串行读取数据操作可看出,SPI的SCLK工作在空间高电平,在sclk第一个边沿读取数据的模式,故配置CPOL为high,CPHA为1 Edge。
【嵌入式】STM32+STM32CubeMX调试AD7606记录
至于Baud Rate,此处也不能乱配置,要根据AD7606手册中的说明配置,不得高于手册中各驱动电压下的最大速率即可。
【嵌入式】STM32+STM32CubeMX调试AD7606记录
另一个需要注意的点是t18,以为拉低CS后不能马上进行SPI读取,需要等待以下时间后才可以。对于160MHz主频来说,一个时钟周期为1/160MHz=6.25ns,故在拉低CS后,需要__NOP() 5~6次后方可进行SPI读取。
【嵌入式】STM32+STM32CubeMX调试AD7606记录

四、测试

按以上步骤配置后,AD7606就被驱动起来了,需要注意的是,上电或者复位后,最好空读几次数据,防止读出的第一个采样值紊乱的可能。
下图为将采集到的双通道正弦波数组绘图后的结果,可以看出经过过采样后,波形非常稳定,基本没有噪声。
【嵌入式】STM32+STM32CubeMX调试AD7606记录

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

【嵌入式】STM32+STM32CubeMX调试AD7606记录

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » 【嵌入式】STM32+STM32CubeMX调试AD7606记录
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏