Chinaunix首页 | 论坛 | 博客
  • 博客访问: 400101
  • 博文数量: 57
  • 博客积分: 193
  • 博客等级: 入伍新兵
  • 技术积分: 1192
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-13 14:37
个人简介

当以艺术眼光看程序,寻找程序后面的原理,做到化而不忘

文章分类

全部博文(57)

文章存档

2017年(5)

2015年(7)

2014年(27)

2013年(18)

我的朋友

分类: 嵌入式

2013-06-30 20:18:46

2013年6月28日 18:32:50
MCU编程特别是设备编程,真是不容易,寄存器设置只要有一个不对,那就不能工作,如果对寄存器不熟悉,一辈子也很难找到原因,如何改变这样的现状?不被寄存器牵着走?根据自己的经历,总结如下:

处理器三大树:时钟树,设备树,总线树。三者相互关联,密不可分。时钟树是指MCU有哪几时钟源,各个时钟供给哪些设备来使用,设备是挂载在总线上的,MCU一般情况下会有好几条总线,原因很简单,各个设备速度不同,自然占用的总线不同,时钟也不同。

时钟树:这个很重要,因为有多个时钟可选择,所以你要对其进行仔细分辨,最好将其列出表来,哪些器件有哪些时钟源,各个没的时钟,比如外设的时钟,内部CPU工作时钟,时钟源的频率是多少,相应的分频系统是多少。

设备树和总线树一般MCU手册中都会提到,这个就不用再总结了。

时钟树中,有个概念很常见:分频系数,它是设定模块的工作精度的或者说是工作速度的,也就是说不同的分频系数其精度是不同的,处理器的负载也是不同的,所以才会要求你选择不同的分频系频系统来设置不同的精度,进而控制MCU工作在不同的负荷下面。

在编程时要注意以下几个方面:时钟树及外围器件树(二者是天生一体的,画出一个,另外一个就出来了),时钟源(及分频系数),中断,引脚配置(输入输出模式,上啦电阻是否使用,引脚功能选择),

器件相关的三大设置:
1:基本设置: 时钟源,分频系数,模式设置,引脚功能设置(多项选择,一个引脚有很多功能,你要选择使用那个,屏蔽那个),使能寄存器,中断,开始停止,状态,自动重装功能,触发源选择,总线归属,总线操作

2:功能设置:这个是具体功能相关的,也是最难懂的,比如你要设置以太网控制器的功能器件,那么你就要对以太网协议很了解,然后才可能正确设置,比如CAN控制器消息ID寄存器就是这样,这个是分析的重点,只有充分理解了协议才可以真正读懂手册。

3:特色设置:这个就是各个芯片的特色功能了,各个芯片都不一样,可能复杂一些的芯片功能会比较全面一些。  比如常见的SPI设备的RAM管理,队列管理,设备测试模式(用于对设备进行测试的,查看芯片功能是否完好,这个可能在航天MCU编程中会用到,因为它要确保所有的功能是完整的可用的),命令解析和执行(比如SPI命令) 


比如PWM发生器,基本设置:当然要先选择时钟源及分频系数,中断,功能设置:占空比,极性设置。

另外,要明白设备的具体其物理用途,这样才算是真正理解了。比如定时器可以工作在脉冲累加的模式下,这个就对应于比如车轮转速传感器的脉冲输出,也就是说,你要明白处理器和汽车传感器是天生一体的,在意识上要将他们联系起来,在看到汽车传感器时,就要想着硬件电路上如何对其进行处理,要用处理器的那个模块,设计电路和写程序时要注意什么。 

另外,一般情况下,每个设备的功能是很全面的,这一点可以从厚厚的芯片手册中得到验证, 一般情况下,我们做MCU开发,只会用到其中很少的功能。比如CAN模块的环路测试就很少会用到。如果我们彻底理解了每个设备的各项含义,那么程序可以写得很强大。
 完全是想到哪写到哪,没什么线索的,看官勿怪。
阅读(3001) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~