最新日志

发表于:2008-6-21 12:47:32
标签:STM32  UART数据格式  

0

STM32的UART支持格式解读

STM32的UART是8或9位,支持以下格式:

 数据位数   奇偶检验  停止位
7 奇或偶 0.5、1、1.5、2
8 无检验 0.5、1、1.5、2
8 奇或偶 1
9 无检验 1

UART4、UART5不支持0.5和1.5位的停止位。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(112)
发表于:2008-6-21 12:08:17
标签:STM32  ADC特性  解读  

0

STM32的ADC精度说明

以下所有的说明来源于《STM32F103xx数据手册》(2008年5月 第7版)。这里没有新的信息,只是把数据手册中的相应部分翻译了一下。


在阅读这个数据手册中各个参数时,首先必须搞清楚这些参数是如何得到的。根据手册中5.1.1节和5.1.2节的说明,有些参数是在一定条件下在生产线上测试得到,有些则是根据样本测试后推算得出。下面这段话是5.1.1节和5.1.2节的译文摘录:

5.1.1 最小和最大数值
除非特别说明,在生产线上通过对100%的产品在环境温度TA=25℃和TA=TAmax下执行的测试(TAmax与选定的温度范围匹配),所有最小和最大值将在最差的环境温度、供电电压和时钟频率条件下得到保证。

在每个表格下方的注解中说明为通过推算、设计模拟和/或工艺特性得到的数据,不会在生产线上进行测试;在推算的基础上,最小和最大数值是通过样本测试后,取其平均值再加减三倍的标准分布(平均±3∑)得到。

5.1.2 典型数值
除非特别说明,典型数据是基于TA=25℃和VDD=3.3V(2V ≤ VDD ≤ 3.3V电压范围)。这些数据仅用于指导设计而未经测试。

典型的ADC精度数值是通过对一个标准的批次采样,在所有温度范围下测试得到,95%的产品误差小于等于给出的数值(平均±2∑)。


再看下面两张表,在25℃且VDDA = 3V~3.6V时,典型误差可达±1.3LSB,最大可达±2LSB;在所有温度范围内且VDDA=2.4V~3.6V时,典型误差可达±2LSB,最大可达±5LSB。

点击看大图

关于ET、EO、EG、ED、EL的意义和关系见下图(此图是手册中的图29):

点击看大图

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(137)
发表于:2008-6-6 22:29:44
标签:STM32  ARM  单片机  

0

STM32F103——充满想象力的芯片

本文链接:http://user.qzone.qq.com/53023365/blog/1206706967

STM32F103——充满想象力的芯片

1、ARM最新的Cortex-M3内核。优先级抢占的中断控制器,支持中断自动嵌套,硬件完成现场保护与恢复,中断嵌套时,只需保护和恢复一次现场,即使在恢复现场的时候再次中断也不需要再次保护现场,只需6个clk的调整时间。
2、居然只需7个滤波电容就能构成最小系统
3、外设的引脚居然可以重影射
4、RAM居然可以通过位绑定技术按位来访问
5、居然装备了可编程的掉电监测器
6、居然有带电池供电的数据备份寄存器
7、芯片进入低功耗模式后可以通过“事件”唤醒,而无须执行中断子程序
8、定时器居然有前置的倍频器
9、2个12位的AD却拥有高达1M的采样速率,AD模式更是天花乱坠,传说中的注入模式……
10、GPIO刷新速率可设定,支持位的原子操作,还能锁定方向,居然还有个脚叫“入侵检测引脚”,发生“入侵”时硬件自动记录时间,只要有后备电池。为西门子保留了单脉冲的输出功能(据说用于PLC的)……
11、原来还有一种狗叫模拟看门狗……
12、可检测PWM脉宽和频率(硬件直接支持)
13、集成电机控制和霍尔接口
14、原来还有一种狗叫窗口看门狗……过早或过晚喂狗,狗都会让系统复位
15、还集成了第三只狗,独立看门狗,这种狗比较常见
16、SPI还带硬件的CRC校验高达18Mb/s的通讯速度
17、支持两个设备地址的I2C总线,据说任天堂的游戏机常用到这种功能,I2C同时支持SMBUS2.0和PMBUS模式
18、USART速度高达4.5Mbps,不仅支持IrDA还与接触式的IC卡协议兼容
19、还有CAN,USB……
20、只要十几块钱
21、……
至今还没搞清到底有多少功能

STM32:Releasing your creativity!

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 转贴

评论(1) | 阅读(261)
发表于:2008-5-13 18:53:48
标签:STM32  温度传感器  ADC  手册  

0

STM32温度传感器的使用和计算

STM32内置一个温度传感器,通过ADC_IN16这个通道可以读出温度传感器的电压。在STM32的技术参考手册中给出了一个计算公式:

Temperature (in ℃) = {(V25 - VSENSE) / Avg_Slope} + 25

公式中的Vsense就是在ADC_IN16读到的数值。Avg_Slope就是温度与ADC数值转换的斜率。

设想一个XY坐标,X轴为ADC的电压读数,Y轴为温度,两轴之间有一条直线代表了温度与转换电压的关系;在这条直线上如果X轴电压为V25时,Y轴即为25℃;当读出的电压是其它数值时,即读出的电压是Vsense时,使用这个公式就可以得到温度的数值。

在STM32F103xx的数据手册中分别给出了V25和Avg_Slope的值:

V25             最小=1.34V  典型=1.43V   最大=1.52V
Avg_Slope 最小=4.0  典型=4.3   最大=4.6    单位是 mV/℃


例如读到Vsense = 1.30V。分别取V25和Avg_Slope的典型值,计算得到:

(1.43 - 1.30)/0.0043 + 25 = 55.23

所以温度大约为 55℃


STM32F101xx数据手册

STM32F103xx数据手册

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(348)
发表于:2008-4-18 16:36:49
标签:STM32  固件库  EK-STM32F开发板  

1

运行于EK-STM32F学习板上的STM32固件库中的例子

我们这里一个上海交大来的实习生,在他学习STM32的过程中,把STM32固件库中的所有例子程序移植到了南京万利推出的EK-STM32F学习板,下面是他的工作成果,供各位网友学习参考。

注:因为原有的例子程序是运行于ST标准的评估板——STM3210B-EVAL,有些资源是EK-STM32F学习板没有的,所以部分例子程序没有经过验证。每个例子目录中都有一个简短的说明,标明了修改过的部分,并指明例子是否经过验证。


请先解压这两个文件的内容到同一个目录下,再根据“使用方法.txt”中的步骤操作。文件“stm32lib_contents.htm”中有所有例子的列表。

点击下载STM32F10xFWLib_on_EKSTM32F Part1.zip

点击下载STM32F10xFWLib_on_EKSTM32F Part2.zip

 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(4) | 阅读(794)
发表于:2008-4-15 13:57:26
标签:STM32  定时器  外部时钟  脉冲计数  

0

使用STM32的定时器进行输入脉冲的计数

    STM32的定时器具有计数功能,在实际应用中可以用来对引脚上的输入信号进行统计。其输入信号作为计数时钟,输入引脚为ETR引脚。

    本例程使用Timer 2,其ETR输入引脚为PA1,初始化是设置该引脚工作模式为输入模式,Timer2的工作模式为从模式。

    为了方便测试,另外使用PC6模式输出一个时钟信号。测试时将PC6与PA1短接。(用户也可另外连接一个时钟信号到PA1引脚上。)

代码如下:
int main(void)
{
 unsigned char i_Loop;
 unsigned char n_Counter;

#ifdef DEBUG
  debug();
#endif

 RCC_Configuration();  // System Clocks Configuration
 NVIC_Configuration();  // NVIC configuration
 GPIO_Configuration();  // Configure the GPIO ports

 TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
 TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);  // Time base configuration

 TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);

 TIM_SetCounter(TIM2, 0);
 TIM_Cmd(TIM2, ENABLE);

 for(i_Loop = 0; i_Loop < 100; i_Loop ++) {
  GPIO_SetBits(GPIOC, GPIO_Pin_6);
  Delay(10);
  GPIO_ResetBits(GPIOC, GPIO_Pin_6);
  Delay(10);
 }

 n_Counter = TIM_GetCounter(TIM2);
 while (1) {
 }
}

前三行进行了时钟、中断、和I/O口的配置。然后进行Timer的基本配置,计数器自动装载值为0xFFFF,计数频率不分频,定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)使用的采样频率之间的分频比为1,计数器向上计数。

TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);

使用ETR时钟作为计数时钟需要设置为外部时钟模式2,故调用该函数,在设置时
1、关闭预分频:TIM_ExtTRGPSC_OFF。
 可选项:
    TIM_ExtTRGPSC_OFF      0x0000
    TIM_ExtTRGPSC_DIV2     0x1000
    TIM_ExtTRGPSC_DIV4     0x2000
    TIM_ExtTRGPSC_DIV8     0x3000

2、外部触发极性ETR不反相,高电平或上升沿有效:TIM_ExtTRGPolarity_NonInverted。
 可选项:
    TIM_ExtTRGPolarity_Inverted和
    TIM_ExtTRGPolarity_NonInverted。

3、外部触发无滤波器:0000。
   可选项:
 0:无滤波器,以fDTS采样
 1:采样频率fSAMPLING=fCK_INT,N=2
 2:采样频率fSAMPLING=fCK_INT,N=4
 3:采样频率fSAMPLING=fCK_INT,N=8
 4:采样频率fSAMPLING=fDTS/2,N=6
 5:采样频率fSAMPLING=fDTS/2,N=8
 6:采样频率fSAMPLING=fDTS/4,N=6
 7:采样频率fSAMPLING=fDTS/4,N=8
 8:采样频率fSAMPLING=fDTS/8,N=6
 9:采样频率fSAMPLING=fDTS/8,N=8
 10:采样频率fSAMPLING=fDTS/16,N=5
 11:采样频率fSAMPLING=fDTS/16,N=6
 12:采样频率fSAMPLING=fDTS/16,N=8
 13:采样频率fSAMPLING=fDTS/32,N=5
 14:采样频率fSAMPLING=fDTS/32,N=6
 15:采样频率fSAMPLING=fDTS/32,N=8

TIM_SetCounter(TIM2, 0);
初始化Timer的计数器初始值为0;
TIM_Cmd(TIM2, ENABLE);
启动Timer2


点击下载

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(3) | 阅读(444)
发表于:2008-4-12 23:03:10
标签:STM32  产品编号  

0

STM32系列产品编号信息

每种STM32的产品都由16个字母或数字构成的编号标示,用户向ST订货时必须使用这个编号指定需要的产品。这16个字符分为8个部分,下面通过一个例子说明它们的意义:

 

STM32 F 103 C 6 T 7 xxx
  1   2  3  4 5 6 7  8

 

第1部分:产品系列名,固定为STM32

第2部分:产品类型;F 表示这是Flash产品,目前没有其它选项

第3部分:产品子系列;103表示增强型产品,101表示基本型产品

第4部分:管脚数目;

T = 36脚
C = 48脚
R = 64脚
V = 100脚
Z = 144脚

第5部分:闪存存储器容量:

6 = 32K字节
8 = 64K字节
B = 128K字节
C = 256K字节
D = 384K字节
E = 512K字节

第6部分:封装信息;

H = BGA
T = LQFP
U = VFQFPN

第7部分:工作温度范围;

6 = 工业级,-40 ~ +85°C
7 = 工业级,-40 ~ +105°C

第8部分:可选项;此部分可以没有,可以用于标示内部固件版本号。


具体型号的更多信息需要参考STM32数据手册,或STM32选型与宣传册


下表是所有ST6、ST7、ST10、STR7、STR9和STM32系列产品的编号:

点击开大图

ST网站上有上述系列的ST MCU的选型手册

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(262)
发表于:2008-4-12 18:00:23
标签:STM32  选择字节  看门狗  配置  

0

STM32中选择字节的用途

STM32中有些硬件功能可以由用户自己配置,选择字节用于这些配置。

这些通过用户选择字节配置的功能不能简单地通过软件配置,相应的功能必须在芯片上电时存在。

如内部的独立看门狗,可以通过用户选择字节配置为做看门狗用,也可以通过用户选择字节配置为做普通计数器用;做看门狗使用时,软件是无法停止它的,所以芯片上电时这个功能就必须有效。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(317)
发表于:2008-4-12 17:52:48
标签:STM32  BOOT  复位启动  ISP  

0

STM32三种启动模式中存储器的存储介质

STM32三种启动模式对应的存储介质均是芯片内置的,它们是:

1)用户闪存 = 芯片内置的Flash。
2)SRAM = 芯片内置的RAM区,就是内存啦。
3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。

在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表:

BOOT1=x  BOOT0=0  从用户闪存启动,这是正常的工作模式。
BOOT1=0  BOOT0=1  从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1  BOOT0=1  从内置SRAM启动,这种模式可以用于调试。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(2) | 阅读(309)
发表于:2008-4-12 17:39:12
标签:STM32  GPIO  优越功能  I/O口速度  

0

STM32 GPIO端口的输出速度设置

当STM32的GPIO端口设置为输出模式时,有三种速度可以选择:2MHz、10MHz和50MHz,这个速度是指I/O口驱动电路的速度,是用来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。

高频的驱动电路,噪声也高,当你不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。

当然如果你要输出较高频率的信号,但却选用了较低频率的驱动模块,你很可能会得到失真的输出信号。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(3) | 阅读(259)
总共 , 当前 /,2下一页