完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
第二课:单片机基本组成 没有找kinetis的构架图,随便找一个通用的图来表示吧,这个图对刚开始接触的基本很难看懂,所以咱们就只讲最重要的,后面要用到的,这个图大制就是各种单片机的结构图,可以看到Kinetis大制是一个什么样子,发挥一下想像力,总线就是一个内部回转传送带,用于各个部件同CPU交换数据,但是交换数据的时候就会有一个问题,比如计时器因为人不可能从早到晚不停的数着时间,只需要在特定的时候看一下表就知道到了几点了,CPU里面也是一样的,会设计一系列的专用存放这些不需要CPU时时刻刻去操作的部件,叫寄存器,CPU只有在中断时或是主动读取这些寄存器就知道计时到何处了,这些寄存器分很多种,都是针对一种特定的硬件功能设计的,所有叫特殊功能寄存器,用特殊功能寄存器作为我们进行编程的重点,因为程序运行中,最终的结果只有两种方式,一是存放在RAM中,这样的数据只适给CPU自己用,因为谁也看不到也用不到,单片机的数据最终还是为了给人看的,所以必须输出到硬件上来体现,比如输出到现显示,输出电平,等等,这就必然要通过硬件对应的特殊功能寄存器,另外编程还需要获得外部各种信息,而MCU的信息来源只有两个,一是程序直接给的数据或是给的数据经过一定的运算获得的间接数据,另外就必须通过外设输入,比如IO的电平或是计时器的计时,所以最终,操作一个单片机的目的就是操作寄存器。Kinetis也一样的,最终就是操作里面的寄存器。 寄存器就是这么回事了,接下来讲一下振荡电路吧,所谓的振荡电路呢其实就是像老式印刷机的刷子,上面是一个有刻了字的地方变成了孔的蜡纸,下面放纸张,上面用个油刷,沾上油墨,刷一次就把字都印到下面的纸上面了,每刷一次印一张,振荡电路也是这样的,振来振出就好比刷子刷一次,CPU每接收到一次振荡就去刷一次,外设也一样,当然不同的MCU会不一样,有时候他们的时钟会配成不同的方式,来源可能是一样的,但是接到的频率却也可能会不一样。具体就是因为MCU的CPU与外设的频率要求是不一样的,当然有的也可能是一致的,原因就是使用锁相环与分频器,然后转换来转换去,有点像家里的电源一样,来源都是230V供电,手机获得的充电是5V,但是电脑却主要用使12V,老电视机的高压包上面却有上万伏,就是因为使用各种变压器转换的结果。同样是推一下,如果中间用不同物理方式进行转换就能获得不同结果,好比带变速档的自行车,同样是用脚踏一圈,调在不同的档位后轮转动的圈数却是不一样的。锁相环与分频器就相当于变压器或是档位器,锁相环是用来倍频的,就是获得原来的频率的整倍数,10倍频就是原来转1圈,现在转10圈,分频器是用来分频,就是获得原来频率的分数。10分频就是原来转10圈,输出却只转1圈。所有的单片机都必须有振荡电路,如果看不到振荡电路是因为振荡电路内置了,现在的单片机越来越高级,外围也越来越复杂,为了防止外围电路的原因导致MCU无法正常的启动,现在高级点的MCU都内置了振荡电路,但是由于内置的振荡电路只是为了保证稳定的启动所以往往频率不是那么准,随温度等原因飘得利害,所以很多电路中还是会外部给他加一个振荡电路。现在的振荡电路有多种,一般都是用的有源晶振,或是无源晶振,这两种的差别就是有源的稳定,更贵,需要供电,只需要一个脚输入到MCU就行了,无源晶振特定就是便宜,只需要配个简单起振电路就行了,一般就是两脚用两个电容接地,输入到MCU需要两脚接到MCU。 接下来讲一下中断吧,因为MCU本质就是用来解决一些问题的,如果这些问题可以直接按个一个简单的顺序流水完成,中间不会存在任何需要特别处理的事情,那么就没有必要去用使用MCU。就像排风扇如果只需要不停的转就行了,那么也就没有必要处理什么事情(当然电脑中散热风扇会根据温度调节风速是另一回事了)。往往事实上很多事情都不是直接能流水完成,所以CPU都设置有中断机制,让CPU来回的处理不同的事情,同时因为CPU速度过快,所外围的电路却要慢很多,也不能老让CPU等着,所以就需用到中断来让CPU快速的回来处理,当然也可以用轮询,但是轮询的反应时间是没有中断快,中断是每条指令就会检查标志位,而轮询却需反复运行到代码去检查外设,资占用多。中断的过程就大约就是一个领导不停的给你下任务,你就得看着领导的层级去完成他们的指令。 然后是定时器与计数器,这两个其实就一个东西,有点像空姐手里计数器,每上一个人它就按一下,计下多少数量,如果把计数对像换一下,每秒按一下,那么计数器实际上记下的就是时间了,原理就是这样子。MCU可以配置不同的来源给定时计数器用,从而达到定时或是计数的目的。 差不多就这些吧。
|
|
|
相关推荐
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
2135个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
37376 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
6776 浏览 1 评论
7794 浏览 1 评论
7642 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
5071 浏览 0 评论
1557浏览 2评论
关于NINA-W132 Wi-Fi模块SPI通信遇到的疑问求解
1210浏览 2评论
如何在MPC PowerPC MCU上首次刷写后禁用BDM?
749浏览 1评论
将HFREFR和LFREFR寄存器值设置为错误的值来将故障注入CMU,但CMU_ISR值始终为零,为什么?
736浏览 1评论
将SPSDK for FRDM-MCX-W71 SDK与VS一起安装时出现hidapi构建错误怎么解决?
679浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 17:59 , Processed in 0.563429 second(s), Total 73, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖