TaterLi's LazyBlog

自言自语,不喜绕路,科学上网,远离天国.

@TaterLi2月前

02/9
11:35
母亲回忆录

我妈突发性心肌梗已去世,于2月8号早上10:43彻底告别人间.

我妈昨天已经去世,希望天堂没有心肌梗塞,没有癌症.

开始倒带回忆一些事情.

11月6号早上,医生跟我们说,一切没事,多发性骨髓瘤已经得到控制, 进展比预期顺利很多很多.也不用抽骨髓来检查.我们非常开心,但是我妈突然吃不了东西,出现了一些呕吐现象,因为以前也有呕吐,所以也没管.

11月6号中午,说到吃饭,他说他吃不下,给他吃点麦片,然后想起之前亲戚给的一些麦片,还有抽血那么多,给了他一些红枣粉,结果还吐了,到了晚上还止不住,就叫医生打了止吐针.

11月6号晚上6点,他说非常辛苦,不要跟他说话,睡着都会吐,结果到了晚上可能止吐针起效了,还能走了两三趟走廊,估计600米左右吧[……]

[我要看更多…]

我妈突发性心肌梗已去世,于2月8号早上10:43彻底告别人间.

@TaterLi2月前

01/29
16:11
技术控

STM32L011 模拟比较器窗口模式&ADC模拟看门狗 对比

模拟比较器优点

  1. 速度快
  2. 功耗低

模拟比较器缺点

  1. 容易反复进入中断,因为靠近阈值时候会震荡.
  2. 设置的阈值比较麻烦
  3. 需要占用两条中断线路
  4. 占用两个比较器

ADC看门狗优点

  1. 速度从快到慢可调
  2. 阈值可以线性设置
  3. 中断不会频繁进入,因为采样时间比较长时候数值稳定.

ADC看门狗缺点

  1. 反应迟缓,速度最快时候依然不如模拟比较器
  2. 占用整个ADC外设

STM32L011 模拟比较器窗口模式&ADC模拟看门狗 对比

@TaterLi3月前

01/27
15:48
技术控

STM32L011 硬件模拟比较器(比较模式)

在STM32L011中,硬件模拟比较器有两个,COMP1和COMP2,这不是废话吗?

单用比较器当然是比较电压,如果两个混用,就可以做到类似ADC的模拟看门狗一样的功能.

如果正相输入端电压高于反相输入端电压,那么输出1,这么很容易理解,就是比如比较PA0和PA1电压,PA1和Vref电压等等.如果是两个COMP一起用呢,那么COMP都输出为1,那么就是电压过高了,既超过COMP1门限也超过COMP2门限,如果都输出为低,那么就是过低了,既低于COMP1也低于COMP2,所以,一个输出高一个输出低,就表明在范围内了,这样是合理的设定.

因为COMP的寄存器,在Keil中没有表[……]

[我要看更多…]

STM32L011 硬件模拟比较器(比较模式)

@TaterLi3月前

01/27
09:09
技术控

STM32L011 ADC 总结

使用L011的ADC已经一段时间,大多数功能也已经体验,差个定时器触发,为什么还没写,也就两个原因,一个是我懒,定时器暂时不想学习,一个是觉得本来速率就很低,还加上定时器触发转换,速率就更低了,何况转换回来数据,一般还需要二次处理,除非你要得到一个极低极低变化的信号,比如VBAT电压.

DMA转换,这应该是应用最广泛的一种.可以按照设定的速率,批量获取数据,并且避免ADC查询,因为就算,也要吃掉28个系统时钟一次转换,10次就280个系统时钟.所以经常可以省下上万个系统时钟.

模拟看门狗,观察外部条件,是否符合,监测电压波动,电流过大过小,工作异常,其实就是一个一直转换的ADC,只[……]

[我要看更多…]

STM32L011 ADC 总结

@TaterLi3月前

01/26
17:02
技术控

STM32L011 ADC 模拟看门狗

因为网上很少人做模拟看门狗的实验,所以资料比较少.要实现模拟看门狗,要有以下几个条件.

  1. 只能检测一个通道或者监测所有通道.
  2. 监测过程其实也是ADC不断转换过程.
  3. 设置高低门限,再门限内不会发生中断,再门限外发生中断.
  4. 在发生中断时候,中断不会自己清除.

可以把电源监测中的PVD理解成一个特殊的ADC模拟看门狗中断,只不过PVD的精度比较低,只有8档比较,而且不能比较过高的问题,ADC可以从0~4095全量程可以比较.比如监测220V电压的稳定性,然后给出报警,通过调理电路得出0 – 4095映射0 – 240V,那么0.1V的变化都可以被监测到.

好了,[……]

[我要看更多…]

STM32L011 ADC 模拟看门狗

@TaterLi3月前

01/26
10:15
技术控

STM32L011 DMA ADC

采样PA0,PA1,内部温度传感器,内部基准参考,其中PA0接VCC,PA1悬空.

代码如下:

#include "stm32l0xx.h"
__IO uint32_t uwTick;
uint16_t pdata[100][4] = {0x00};
void DMA1_Channel1_IRQHandler(void)
{
if( (DMA1->ISR & (0x00000002U)) != RESET)  /* DMA_FLAG_TC1 */
{
if((DMA1_Channel1->CCR &[......]

[我要看更多…]

STM32L011 DMA ADC

@TaterLi3月前

01/25
13:19
碎碎语

STM32L0 12Bit ADC(硬件)过采样得到16Bit ADC数据

过采样可以帮助避免混叠,提高分辨率以及降低噪声.理论来说,频率足够高的话,就可以获得无限位精度.根据一大堆高深理论得知..这么一条公式.反正我不懂.

通俗说,1次采样是12Bit,4次是13Bit,16次是14Bit,64次是15Bit,256次是16Bit,如果要更高精度,那么STM32的硬件过采样就无能为力了.比如说要得到20Bit的话,就要65536次,这样就算在1.14Msps下,也只能17次一秒,16777216次就可以到24Bit了,所以理论上可以无限精度,但是呢,时间嘛,十几秒一次采样率,不然的话你叫ADC0832能狂秒128Bit ADC了.

关于硬件过采样,关键的[……]

[我要看更多…]

STM32L0 12Bit ADC(硬件)过采样得到16Bit ADC数据