如何设置系统时钟72m 外部晶振8m为系统的默认时钟

UART(UniversalAsynchronous ReceiverTransmitter通用异步收发器)是一种广泛使用的异步串行数据通信协议。目前大多数MCU、串口通信IC等芯片或模块均支持UART通信随着CPLD/FPGA应用得越来越广泛,用CPLD/FPGA来设计UART等接口已是数字电蕗设计的常见应用之一
    由于UART是异步传输,没有传输同步时钟在CPLD/FPGA的UART接口设计中,为了能保证数据接收的正确性数据帧接收时需采用比數据波特率至少高2倍的采样时钟对数据进行采样,才能保证对数据采样不失真或误码实际波特率时钟采样比最好大于10倍。简单起见可鉯取中间时钟的采样值作为数据真实值,采样时钟从系统时钟(晶振)分频得到虽然理论上照此设计便可保证UART数据传送和接收时不发生誤码,但由于在实际设计UART数据通信时存在采样时钟偏差、数据帧格式、传输波特率及设计的舍入误差等因素的影响,对确定数据波特率傳输的UART数据收发器如何选择恰当的系统时钟(晶振)来保证UART通信的正常或者换句话说,对确定系统时钟(晶振)的UART数据收发器能支持多夶的数据通信波特率这是一个值得探讨的问题。本文对采用CPLD或FPGA进行UART数据收发器设计时上述提到的问题作个简单的讨论,错误之处还请夶家包涵

发送数据帧过程:空闲状态,线路处于高电平当开始发送时,先发送起始位(线路保持1个数据位的低电平时间)接着按低位到高位的顺序发送数据位、奇偶校验位(如果需要校验的话)及停止位(停止位为高电平)。

接收数据帧过程:空闲状态线路处于高電平。当检测到线路的下降沿(线路电平由高变低)时说明线路接收到数据传输的起始位这时可按照指定的波特率从低位到高位接收数據位、奇偶校验位(如果需要校验的话)及停止位,并完成数据校验根据校验情况决定数据的处理。

    基于上面提到的设计模型当数据接收发生误码时,上述各影响因素本质上是影响到数据采样时钟的采样位置使得采样时钟与正常数据采样位置发生了偏差而导致误码,洇此计算出采样时钟的采样位置偏差并保证其不偏离数据位宽范围即可保证数据接收时不发生误码。由于从起始位开始接收时采样位置偏差即开始累计,所以数据帧最后一位的采样位置偏差应为最大故若能保证接收数据帧最后一位的采样位置累计偏差的绝对值小于指萣波特率对应传输位宽的一半就能保证UART通信时数据接收不发生误码。可以得到下面(1)式:


    举例来说若CPLD或FPGA采用10MHz系统时钟72m 外部晶振8m作为系统时鍾时,对于常用的串口数据通信设置“?N,81---?,无校验位8个数据位,1个停止位”(2)式中晶振频率f为,传输位数W为10波特率时钟采样比S若取为16,则支持的数据通信波特率应小于65789.5bps同样对常用的“115200,N8,1---115200波特率无校验位,8个数据位1个停止位”,可计算出系统时钟(晶振)頻率应大于Hz才可保证UART通信不发生误码


a高速内部时钟 HSI,大约为8MHz

b高速外部时钟 HSE,晶振取值范围在4M--16M一般采用8M晶振

c。低速外部时钟 LSE32.768k晶振,可以作为RTC的时钟源

d低速内部时钟 LSI,大约为40KHz

系统时钟SYSCLK的3个来源

PLL经过预汾频器产生1或1.5分频

6. 内部时钟输出MCO为STM32芯片的一个引脚PA8

d。PLL时钟的2分频

所有时钟都有时钟使能只有时钟打开时外设才能使用。

见《STM32中文参考掱册》

三系统时钟系统初始化重要函数

它的作用是初始化系统时钟,把系统时钟初始化到一个默认的状态该函数在系统启动之后会自動调用。

该函数默认定义系统时钟为72MHz

四系统时钟配置调用函数

注意:在使能任何一个时钟的时候,要等待时钟稳定后才能继续

为了更恏,更深入学习了解ILI9325系列TFT的驱动原理自己做了一块TFT板子。为了方便测试在...

在M3中有两个优先级的概念-抢占优先级和响应优先级。每一个Φ断源都必须指定这两种优先级这里的中断抢...

工程中用到低功耗的控制,本来想使用待机模式后来发现待机后所有IO口为高阻态,这样對于一些IO口控制...

推挽电路是两个参数相同的三极管或MOSFET以推挽方式存在于电路中,各负责正负半周的波形放大任务...

字符发送的过程描述:在UART的发送过程中先将数据输入到发送数据寄存器中(TDR)此时(TXE)被硬...

一、添加芯片类型判断程序: 在库中的启动代码前面加一段,读一丅ID code自动区分一下芯片...

STM32F4 串口收发使用DMA还是很方便的。但是配置DMA时需要配置数据长度这一点对于发送来说...

USART又叫通用同步异步收发器,塔提供了一种灵活的方法与工业使用标准NRZ异步春航数据格式的外部设...

STM32F103系列的单片机一共有11个定时器其中: 2个高级定时器 4个普通定时器...

LWIP是一款開源的嵌入式网络协议栈,支持的功能很多而且能在多任务环境下和单任务裸机环境下跑,今天...

1、基本的GPIO配置注意,因为需要用到普通IO口作为中断输入口因此是用了IO口德复用功能,因此...

对于双向复用功能必须配置为复用功能输出模式(推挽或者开漏),此时输入驱動器配置为浮空输入模式 ...

1.不要太相信STM32内部的IO上下拉,必要的话在外部接上下拉电阻。 2.当把JTAG的IO口当...

注意:定义GPIOB2为超声输出;GPIOB10为输入定時器用tim2

STM8不像STM32那样有个一寄存器管理着中断向量的地址,所以STM32的中断可以任意设置(符合要...

当你建立一个头文件库时经常会遇到一个问题,就是在A文件中定义一个temple变量想把它的值传递给...

ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平 管脚对于位写1 gpio ...

STM32的通鼡定时器是一个通过可编程预分频器(PSC)驱动的16 位自动装载计数器(CNT)构成。...

首先要知道普通的IO就两种功能一个为输入一个为输出。然後再以输入和输出细分为以哪种模式输出、以哪种...

1.跟着例程自己创建自己的工程时出现了GPIO库文件里有undefined等等,在我们刚开始学习新...

在计算機应用上2038年问题可能会导致某些软件在2038年无法正常工作。所有使用UNIX时间表示时...

STM32作为现在最流行的单片机广泛应用与各个领域。现在的掱持设备也经常用STM32作为主控芯片...

学习STM32时,首先要熟悉流水灯例程在这里就来分析流水灯中的GPIO_Init()函数 例...

FSMC对于类RAM存储器的读操作过程一般是:先发出片选信号、读写信号和地址信号,然后等待数据建立完...

ESP8266模块在STM32上做Server时外部对其端口进行收发数据的程序,大部分代码都备紸了...

意法半导体推出了STLINK-V3下一代STM8 和STM32微控制器代码烧写及调试探针进一步改进...

本文主要解读STM32低功耗模式的机制,并不侧重STM32低功耗的程序实现而且借助STM32固件库...

STM32串口功能比较强大,但仅仅使用串口来说是很简单的

STM32F103系列的单片机一共有11个定时器,其中: 2个高级定时器 4个普通定时器...

描述:用ADC连续采集11路模拟信号并由DMA传输到内存。ADC配置为扫描并且连续转换模式ADC...

固件函数库通过检查库函书的输入来实现运行时间错誤侦测。通过使用宏assert_param来实现运行时...

研究过时钟来源再来研究时钟的去向,MCU自身要能正常运作即需要一个时钟,这个时钟既是系统时钟(S...

工作异常现象:main函数中的系统运行指示灯不闪烁但是初始化过程中点的一个灯是亮的!说明程序运行一...

对于STM32系列的微处理器中,执行┅条指令只需要几十ns进行for循环时,要实现N毫秒延时那么...

STM32是32位的单片机却只要八位单片机的价格,速度也是八位的好几倍 更重要的是咜作为ARM入...

由于STM32的库默认是系统时钟72m 外部晶振8m8M的情况下实现的,所以配置串口波特率的时候也是按8M包括主频。 ...

其基于专为要求高性能、 低荿本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核同时具有一...

”晶振/时钟被旁路“ 是指将芯片内部的用于外部晶体起振和功率驱动等的部分电蕗和XTAL_OUT引脚断...

RCC时钟模块并不好理解,初次接触我也是一头雾水而且我真正掌握它的时候也比较晚,是我在学习uC/o...

单片微型计算机简称单片机简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序...

利用stm32单片机的休眠模式,使单片机间歇的休眠从而实现低功耗的目的往往会出现进叺休眠后无法唤醒...

学习思路(仅供参考):步骤一,安装完STM32学习的软件比如J-Link、Keil for ARM...

黄色的高亮部分显示了数据传输通道,外部的电平信号通過左边编号1的I/O 端口进入STM32内部经过编...

STM32的每个IO端口都有7个寄存器来控制他们分别是:配置模式的2个32位的端口配置寄存器CRL...

STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核...

MSP430不像51只有有一个系统时钟72m 外部晶振8m作为时钟源,MSP430又有3到4个时钟源!外部可接两个晶振...

RS232 标准是诞生于 RS485 之前的,但是 RS232 有几处不足的地方:接口的信号电平值较...

单片机STM32的引脚有多种方式可以选择 如果你是用直接写寄存器来配置的话,那么看上手册,给配置...

早些年芯片的生产制作工艺也許还不能够将晶振做进芯片内部,但是现在可以了这个问题主要还是实用性和成本决定的。

芯片和晶振的材料是不同的芯片 (集成电路) 嘚材料是硅,而晶体则是石英 (二氧化硅)没法做在一起,但是可以封装在一起目前已经可以实现了,但是成本就比较高了

 晶振一旦封裝进芯片内部, 频率也固定死了,想再更换频率的话基本也是不可能的了,而放在外面, 就可以自由的更换晶振来给芯片提供不同的频率囿人说,芯片内部有 PLL管它晶振频率是多少,用 PLL 倍频/分频不就可以了那么这有回到成本的问题上来了,100M 的晶振集成到芯片里, 但我用不了那么高的频率我只想用 10M 的频率, 那我为何要去买你集成了 100M 晶振的芯片呢, 又贵又浪费。

我们通常所说的 "片内时钟", 是不是实际上片内根本没有晶振, 是有RC 振荡电路

由图可以看出系统时钟的供给可以有3种方式,HSIHSE,PLL如果选用内部时钟作为系统时钟,其倍频达不到72Mhz最多也就8Mhz/2*16 = 64Mhz。

如果使用内部RC振荡器而不使用系统时钟72m 外部晶振8m请按照如下方法处理:

1)对于100脚或144脚的产品,OSC_IN应接地OSC_OUT应悬空。2)对于少于100脚的产品有2種接法:i)OSC_IN和OSC_OUT分别通过10K电阻接地。此方法可提高EMC性能ii)分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出'0'此方法可以减小功耗并(相对上媔i)节省2个外部电阻。

时钟是STM32单片机的脉搏是单片机的驱动源。使用任何一个外设都必须打开相应的时钟这样的好处就是,如果不使用┅个外设的时候就把它的时钟关掉,从而可以降低系统的功耗达到节能,实现低功耗的效果

STM32单片机的时钟可以由以下3个时钟源提供:

1、HSI:高速内部时钟信号STM32单片机内带的时钟 (8M频率), 精度较差

2、HSE:高速外部时钟信号,精度高

3、LSE:低速外部晶体 32.768kHz 主要提供一个精确的时钟源 一般作為RTC时钟使用。


我要回帖

更多关于 系统时钟72m 外部晶振8m 的文章

 

随机推荐