您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页STM32位带应用

STM32位带应用

来源:筏尚旅游网


STM32位带应用 (2012-07-04 11:25)

标签: stm32 分类: STM32

Cortex-M3 支持了位操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。

在 CM3 支持的位带中,有两个区中实现了位带。

其中一个是 SRAM 区的最低 1MB 范围, 0x20000000 ‐ 0x200FFFFF(SRAM 区中的最低 1MB); 第二个则是片内外设区的最低 1MB范围, 0x40000000 ‐ 0x400FFFFF(片上外设区中的最低 1MB)。

这两个区中的地址除了可以像普通的 RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个bit膨胀成一个 32 位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。

例如RAM 地址0x20000000(一个字节)扩展到“位带别名区”的8个32位的字,分别是

0x20000000.0 = 0x22000000, 0x20000000.1 = 0x22000004,

0x20000000.2 = 0x22000008, 0x20000000.3 = 0x2200000C,

0x20000000.4 = 0x22000010, 0x20000000.5 = 0x22000014,

0x20000000.6 = 0x22000018, 0x20000000.7 = 0x2200001C,

CM3 使用如下术语来表示位带存储的相关地址

* 位带区: 支持位带操作的地址区

* 位带别名: 对别名地址的访问最终作用到位带区的访问上(注意:这中间有一个地址映射过程) 位带区中的每个比特都映射到别名地址区的一个字 —— 这是只有 LSB 有效的字(位带别名区的字只有最低位有意义)。

对于SRAM中的某个比特,该比特在位带别名区的地址:

AliasAddr=0x22000000+((A‐0x20000000)*8+n)*4 = 0x22000000 + (A‐0x20000000)*32 + n*4

对于片上外设位带区的某个比特, 该比特在位带别名区的地址:

AliasAddr=0x42000000+((A‐0x40000000)*8+n)*4 = 0x42000000 + (A‐0x40000000)*32 + n*4

其中 A 为该比特所在的字节的地址,0 <= n <= 7 “*4”表示一个字为 4 个字节,“*8”表示一个字节中有 8 个比特。

当然,位带操作并不只限于以字为单位的传送。亦可以按半字和字节为单位传送。

位带操作有很多好处,其中重要的一项就是,在多任务系统中,用于实现共享资源

在任务间的“互锁”访问。多任务的共享资源必须满足一次只有一个任务访问它——亦即所谓的“原子操作”。

把“位带地址+位序号”转换别名地址宏

#define BITBAND(addr,bitnum) ((addr&0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))

把该地址转换成一个指针

#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))

#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))

可进行位操作

BIT_ADDR(PORTA, 2) = 0; // GPIOA.2 = 0;

BIT_ADDR(PORTB, 3) = 1; // GPIOB.3 = 4;

STM32电源管理器 (2012-07-17 00:03)

标签: STM32 电源 分类: STM32

上电复位(POR)和掉电复位(PDR)

STM32内部有一个完整的上电复位(POR)和掉电复位(PDR)电路,当供电电压达到2V时系统既能正常工作。

可编程电压监测器(PVD)

可以利用PVD对VDD电压与电源控制寄存器(PWR_CR)中的PLS[2:0]位进行比较来监控电源,这几位选择监控电压的阀值。通过设置PVDE位来使能PVD。电源控制/状态寄存器(PWR_CSR) 中的PVDO标志用来表明VDD是高于还是低于PVD的电压阀值。该事件在内部连接到外部中断的第16线,如果该中断在外部中断寄存器中是使能的,该事件就会产生中断。当VDD下降到PVD阀值以下和(或)当VDD上升到PVD阀值之上时,根据外部中断第16线的上升/下降边沿触发设置,就会产生PVD中断。例如,这一特性可用于用于执行紧急关闭任务。

下面这张表截自STM32F103x8/B的数据手册,对上图的参数给出了具体数值:

内嵌复位和电源控制模块特性

下面对上面2张图和表格中的数据做一个简要的解释:

1)PVD = Programmable Votage Detector 可编程电压监测器

它的作用是监视供电电压,在供电电压下降到给定的阀值以下时,产生一个中断,通知软件做紧急处理。在给出表格的上半部分就是可编程的监视阀值数据。当供电电压又恢复到给定的阀值以上时,也会产生一个中断,通知软件供电恢复。供电下降的阀值与供电上升的PVD阀值有一个固定的差值,这就是表中的VPVDhyst(PVD迟滞)这个参数,通过列出的PVD阀值数据可以看到这个差别。引入这个差值的目的是为了防止电压在阀值上下小幅抖动,而频繁地产生中断。

2)POR = Power On Reset 上电复位;PDR = Power Down Reset 掉电复位。

POR的功能是在VDD电压由低向高上升越过规定的阀值之前,保持芯片复位,当越

过这个阀值后的一小段时间后(图中的\"滞后时间\"或表中的\"复位迟滞\"),结束复位并取复位向量,开始执行指令。这个阀值就是表中倒数第4行(min=1.8V,typ=1.88V,max=1.96V)。

POR的功能是在VDD电压由高向低下降越过规定的阀值后,将在芯片内部产生复位,这个阀值就是表中倒数第3行(min=1.84V,typ=1.92V,max=2.0V)。

3)可以看到POR比PDR大了0.04V,这就是表中倒数第2行,VPDRhyst(PDR迟滞)=40mV。

4)从上面的第2张图可以看到,当VDD上升越过POR阀值时,内部并不马上结束复位,而是等待一小段时间(Reset temporization),这就是表中的最后一行TRSTTEMPO,它的典型数值是2.5ms。这个滞后时间是为了等待供电电压能够升高到最低可靠工作电压以上,我们看到POR阀值最小只有1.8V,最大也只有1.96V,都低于数据手册中给出的最低可靠工作电压2.0V,所以这个滞后时间是十分必要的,如果供电电压上升缓慢,尤其是从1.8V升到2.0V以上超过1~2.5ms,则很可能造成上电复位后MCU不能正常工作的情况。

STM32硬件电路设计注意事项 (2012-07-16 13:17)

标签: STM32 分类: STM32

1、电源

1) 、无论是否使用模拟部分和AD 部分,MCU 外围出去VCC 和GND,VDDA 、

VSSA 、Vref(如果封装有该引 脚)都必需要连接,不可悬空;

2) 、对于每组对应的VDD 和GND 都应至少放置一个104的陶瓷电容用于滤波,并接该电容应放置尽量靠

近MCU;

2、复位、启动选择

1) 、Boot引脚与JTAG无关。它仅是用于MCU启动后,判断执行代码的起始地址;

2) 、在电路设计上可能Boot引脚不会使用,但要求一定要外部连接电阻到地或电源(为0或1),切不可悬空;

3 、ADC

1) 、ADC 是有工作电压的,且与MCU 的工作电压不完全相同。MCU 工作电压可以到2.0V~3.6V,但ADC

模块工作的电压在2.4V~3.6V 。设计电路时需要注意。

STM32的工作电压(VDD)为2.0~3.6V 。

100脚和144脚封装:为了确保输入为低压时获得更好精度,可以连接一个独立的外部参考电压ADC到VREF+和VREF-脚上。在VREF+ 的电压范围为2.4V~VDDA 。

64脚或更少封装:没有VREF+和VREF-引脚,他们在芯片内部与ADC 的电源(VDDA)和地(VSSA)相联。

4、时钟

1) 、STM32 上电默认是使用内部高速RC时钟(HSI)启动运行,如果做外部时钟(HSE)切换,外部时钟是不会运行的。因此,判断最小系统是否工作用示波器检查OSC是否有时钟信号,是错误的方法;

2) 、RTC 时钟要求使用的32.768振荡器的寄生电容是6pF,这个电容区别于振荡器外部接的负载电容;

http://bbs.21ic.com/icview-29178-1-1.html

5、GPIO

1) 、IO 推动LED 时,建议尽量考虑使用灌电流的方式。

2) 、在Stop等低功耗模式下,为了更省电,通常情况下建议GPIO配置为带上拉的输出模式,输出电平由 外部电路决定;

6、ST3232外围电容的选择

串口芯片的本质就是将MCU的TTL/COMS电平转换为RS232协议中的电平标准。

而外围电容的用途就是调节电压用的(除了一个旁路电容)。所以外围的电容值的大小决定了转换后的电平大小。

按照ST3232的datasheet 。一般情况下,3.3v供电情况下应该使用0.1uF(104)电容,才能保证性能的稳定。

万利板子RS232:

7、复位电路电容的选择

根据万利的原理图,复位电路的电容是105(1uF)的。复位电路的电容可以稍微大一些。一般10uF-22uF都可以。其中使用了BAT54A,巧妙的将最小系统复位电路和JTAG复位信号线整合到了一起。

BAT45A介绍:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务