3018|5

58

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

[雅特力AT32F421评测] 剪刀石头布_比较器篇 [复制链接]

 

 

与其他国产替代不同,雅特力设计人员加入了一个轨到轨比较器,可编程的参考电压(内部或外部) 、迟滞和速度、可选输出极性, 带消隐输出功能以及干扰滤波器.

譬如可以用来监视模拟电压来退出低功耗模式以节能(传感器之类,低于某电压点不需要处理的情况).模拟电压转数字电平等.当然也可以当个普通比较器来用也是可以的,集成式也节约了物料成本和PCB空间.加量不加价.

可以看到模拟部分同向输入可以是GNDA和PA0,1,5.GPIO输入,反向可以是GPIOA0,2,4,5,也可以是参考电压的1/4,2/4,3/4,4/4.

然后输出给到数字部分,经消隐器后根据我们的配置,输出可以翻转或不翻转.下面可以给到GPIO,中断线或定时器.

同向反向开有个开关可以同反向接到一起,不太明白干嘛用的这个开关.

下面来看下比较器的配置结构体成员,

/** 
  * [url=home.php?mod=space&uid=159083]@brief[/url] COMP Init structure definition  
  */
  
typedef struct
{

  uint32_t COMP_INMInput;           /*!< 比较器的反相输入.
                                         参数 [url=home.php?mod=space&uid=1064992]@ref[/url] COMP_INMInput */

  uint32_t COMP_Output;             /*!< 比较器的输出重定向.
                                         参数 @ref COMP_Output */

  uint32_t COMP_OutPolarity;        /*!< 比较器的输出极性.
                                         参数 @ref COMP_OutputPolarity */

  uint32_t COMP_Hysteresis;         /*!< 比较器的迟滞电压.
                                         参数 @ref COMP_Hysteresis */

  uint32_t COMP_Mode;               /*!< 选择比较器的工作模式并允许调整速度/消耗.
                                         参数 @ref COMP_Mode */

}COMP_InitType;

成员可选参数

/** @defgroup COMP_输出
  * @{
  */

#define COMP_Output_None          ((uint32_t)0x00000000)   /*!< COMP 输出不连接到外设 */
#ifdef AT32F421xx
#define COMP_Output_TMR1BKIN      ((uint32_t)0x00000400)   /*!< COMP 输出连接到 TIM1 中断输入 (BKIN) */
#define COMP_Output_TMR1IC1       ((uint32_t)0x00000800)   /*!< COMP 输出连接到 TIM1 输入捕捉 1 */
#define COMP_Output_TMR1OCREFCLR  ((uint32_t)0x00000C00)   /*!< COMP 输出连接到 TIM1 OCREF 清除 */
#define COMP_Output_TMR3IC1       ((uint32_t)0x00001800)   /*!< COMP 输出连接到 TIM3 输入捕捉 1 */
#define COMP_Output_TMR3OCREFCLR  ((uint32_t)0x00001C00)   /*!< COMP 输出连接到 TIM3 OCREF 清除 */
/** @defgroup COMP_反相输入
  * @{
  */

#define COMP_INMInput_1_4VREFINT          ((uint32_t)0x00000000) /*!< 1/4 VREFINT  */
#define COMP_INMInput_1_2VREFINT          ((uint32_t)0x00000010) /*!< 1/2 VREFINT  */
#define COMP_INMInput_3_4VREFINT          ((uint32_t)0x00000020) /*!< 3/4 VREFINT  */
#define COMP_INMInput_VREFINT             ((uint32_t)0x00000030) /*!< VREFINT  */
#define COMP_INMInput_IN1                 ((uint32_t)0x00000040) /*!< A4   */
#define COMP_INMInput_IN2                 ((uint32_t)0x00000050) /*!< PA5  */
#define COMP_INMInput_IN3                 ((uint32_t)0x00000060) /*!< PA0  */
#define COMP_INMInput_IN4                 ((uint32_t)0x00000070) /*!< PA2  */
/** @defgroup COMP_同向输入
  * @{
  */
#define COMP_INPInput_00               ((uint32_t)0x00000000) /*!< PA5  */
#define COMP_INPInput_01               ((uint32_t)0x00000080) /*!< PA1  */
#define COMP_INPInput_10               ((uint32_t)0x00000100) /*!< PA0  */
#define COMP_INPInput_11               ((uint32_t)0x00000180) /*!< VSSA */
/** @defgroup COMP_输出极性
  * @{
  */
#define COMP_OutPolarity_NonInverted          ((uint32_t)0x00000000) /*!< 不翻转GPIO上的输出 */
#define COMP_OutPolarity_Inverted             COMP_CTRLSTS_COMP1POL  /*!< 翻转GPIO上的输出*/
/** @defgroup COMP_迟滞
  * @{
  */

#define COMP_Hysteresis_No                         ((uint32_t)0x00000000)   /*!< 无滞后 */
#define COMP_Hysteresis_Low                        COMP_CTRLSTS_COMP1HYST_0 /*!< 滞后低*/
#define COMP_Hysteresis_Medium                     COMP_CTRLSTS_COMP1HYST_1 /*!< 滞后中 */
#define COMP_Hysteresis_High                       COMP_CTRLSTS_COMP1HYST   /*!< 滞后高 */
/** @defgroup COMP_模式 
 * @{
  */

#define COMP_Mode_Fast                     ((uint32_t)0x00000000)  /*!< 高速/高功耗 */
#define COMP_Mode_Medium                   COMP_CTRLSTS_COMP1MDE_0 /*!< 中速/总功耗 */
#define COMP_Mode_Slow                     COMP_CTRLSTS_COMP1MDE_1 /*!< 低速/低功耗 */
#define COMP_Mode_Very_Slow                COMP_CTRLSTS_COMP1MDE /*!< 超低速/超低功耗 */

库中还给我们提供了一些函数来调用

/*  基本的重置,默认值,初始化****/
void COMP_Reset(void);
void COMP_StructInit(COMP_InitType* COMP_InitStruct);
void COMP_Init(uint32_t COMP_Selection, COMP_InitType* COMP_InitStruct);
/* Initialization and Configuration functions *********************************/
// COMP1 设置同相输入。
void COMP_SelectINPInput(uint32_t COMP_Selection, uint32_t COMP_INPInput);
//使能外设
void COMP_Cmd(uint32_t COMP_Selection, FunctionalState NewState);
//控制同反向跨接开关的
void COMP_SwitchCmd(FunctionalState NewState);
//获取比较器输出电平
uint32_t COMP_GetOutputState(uint32_t COMP_Selection);

/*  配置锁定功能****************************************/
void COMP_LockConfig(uint32_t COMP_Selection);

#ifdef AT32F421xx
/*  配置消隐过滤器 ****************************************/
void COMP_FilterConfig(uint16_t COMP_HighPulseCnt, uint16_t COMP_LowPulseCnt, FunctionalState NewState);

/*  配置 COMP 消隐源****************************************/
void COMP_BlankingConfig(uint32_t Blank_Selection);

/* COMP 配置内部电压桥。****************************************/
void COMP_SCAL_BRGConfig(uint32_t SCAL_BRG);

个人感觉的话配个PGA(可编程运放)更好些.

最新回复

谢谢分享,期待后续!   详情 回复 发表于 2021-6-1 23:21
点赞 关注
 
 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

是这样的,AT32F421内有一个高速轨到轨比较器,还有1个采样率高达2M SPS的12位15通道高速ADC

可以进行配置高速数据采集、混合信号处理和工业控制与电机的驱动

 

 
 
 

回复

1582

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 

比较器只有两种输出

怎么匹配石头剪刀布?

 

 
 
 

回复

4817

帖子

4

TA的资源

版主

4
 

我在思考,其实这种比较还是比较简单的,一共才几个

 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(中级)

5
 

不太明白那个同相反相短接的开关是干嘛用的,有大佬解释一下吗?

 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

6
 

谢谢分享,期待后续!

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表