打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CCS5.4+Proteus8的F28027实践课九、比较器

今天写的不顺畅,一个AD写了八个小时,然后一个温度传感器又卡了四个小时,哎,没人能一马平川,特别是搞技术,我们的目的不是走马观花式的学习,而是真正了解寄存器的操作,不要怕时间不够,就怕时间花了还吃不透,反而透露着阿Q精神安慰自己,我们不要这样。
来来来,直接进入比较器的学习。


可以提供两个外部模拟输入,一个DAC内部基准;输出可以异步传输,也可以通过限定单元与系统时钟周期同步,进行简单滤波;输出被传送到ePWM触发区(Trip Zone)模块和GPIO输出多路复用器。
比较器大家应该是不陌生的,两路输入,当正极输入大于负极时,输出高电平;反之输出低电平,下面是真值表

每个比较器模块都包含一个10位的DAC电压基准。电压输出大小由DACVAL寄存器或者斜坡发生器控制,这个由第一个比较器的图解大家就可以了解到。
当DACVAL寄存器选择为DAC的输入时,输出大小为

现在来说下斜坡发生器这个,稍微复杂一点

在这种模式下,是把RAMPSTS寄存器的前十位当做DAC的输入
上面看了斜坡发生器的结构图,下面就是它的控制型号

现在来说比较器的操作了:


操作大概步骤如下:
1、使能ADC内的帶隙:ADCTRL1.ADCBGPWD=1;
2、使能比较器模块:COMPCTL.RAMPMAXREF=1;
3、使能COMP时钟:PCLKR3.COMPxENCLK=1;
4、GPIO和AIO引脚复用设置;
5、若用DAC,使能VSSA:ADCTRL1.VREFLOCONV,设置DACVAL.DACVAL,COMP控制寄存器COMPCTL设置:使能、反向输入源、输出取反、同步等

现在来看下具体的寄存器,只有几个,我们耐心看下吧:
首先是控制寄存器



然后是状态寄存器

DAC控制寄存器


DACVAL寄存器

斜坡发生器相关寄存器





好了,理论知识讲完了,现在来开始写程序,步骤已经说了,再复述一遍:
1、使能ADC内的帶隙:ADCTRL1.ADCBGPWD=1;
2、使能比较器模块:COMPCTL.COMPDACEN=1;
3、使能COMP时钟:PCLKR3.COMPxENCLK=1;
4、GPIO和AIO引脚复用设置;
5、若用DAC,使能VSSA:ADCTRL1.VREFLOCONV,设置DACVAL.DACVAL,COMP控制寄存器COMPCTL设置:使能、反向输入源、输出取反、同步等

直接写程序了

   InitComp1Gpio();

   EALLOW;

   SysCtrlRegs.PCLKCR3.bit.COMP1ENCLK=1;
   SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
   AdcRegs.ADCCTL1.bit.ADCPWDN = 1;
   AdcRegs.ADCCTL1.bit.ADCBGPWD = 1;

   Comp1Regs.COMPCTL.bit.COMPDACEN=1;
   Comp1Regs.COMPCTL.bit.QUALSEL = 0;
   Comp1Regs.COMPCTL.bit.SYNCSEL = 0;
   Comp1Regs.COMPCTL.bit.COMPSOURCE = 1;
   EDIS;

   while(1);

终于写完了,好困,准备洗洗睡了,明天见

早上我用PROTEUS仿真了昨晚的程序,死活不行,妹的,然后直接下载到我的实验板里面,把COMP1OUT直接连到一个LED上面,发现程序是正常的,哎,又被仿真软件搞了一个小时,上面的程序是对的,大家可以使用,不过我那是两路都是模拟输入。


我刚刚又去写了下DAC控制的模拟输入方式,也很简单,直接给大家程序吧,效果图跟上面是一样的

   InitComp1Gpio();

   EALLOW;

   SysCtrlRegs.PCLKCR3.bit.COMP1ENCLK=1;
   SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
   AdcRegs.ADCCTL1.bit.ADCPWDN = 1;
   AdcRegs.ADCCTL1.bit.ADCBGPWD = 1;
   AdcRegs.ADCCTL1.bit.VREFLOCONV=1;

   Comp1Regs.COMPCTL.bit.COMPDACEN=1;
   Comp1Regs.COMPCTL.bit.QUALSEL = 0;
   Comp1Regs.COMPCTL.bit.SYNCSEL = 0;

   Comp1Regs.COMPCTL.bit.COMPSOURCE = 0;
   Comp1Regs.DACVAL.bit.DACVAL=500;

   EDIS;

   while(1);

菜鸟交流qq群107691092

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一文看懂DDS原理、混叠、幅度调制
电子器件MAX9979引脚的校准
7.2 DDS(直接数字式频率合成器)电路
ESP32-S3 ADC外设
单片机外围模块漫谈之一,图解说明什么是Flash, SAR, Sigma-Delta型ADC
Maxim设计指南1080 - 理解逐次逼近寄存器型ADC:与其它类型ADC的架构对比
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服