我们不生产PLC,我们只做全新原装的搬运工!
供应ABB贝利 PHARPSCH100000
* 通讯接口:MCU所提供的通讯接口一般包括SPI接口,UART,I2C接口等,其分别描述如下:
** SPI接口:此类接口是绝大多数MCU都提供的一种***基本通讯方式,其数据传输采用同步时钟来控制,信号包括:SDI(串行数据输入)、SDO(串行数据输出)、SCLK(串行时钟)及Ready信号;有些情况下则可能没有Ready信号;此类接口可以工作在Master方式或Sl***e方式下,通俗说法就是看谁提供时钟信号,提供时钟的一方为Master,相反的一方则为Sl***er;
** UART(Universal Asynchronous Receive Tran***it):属于***基本的一种异步传输接口,其信号线只有Rx和Tx两条,基本的数据格式为:Start Bit + Data Bit(7-bits/8-bits) + Parity Bit(Even, Odd or None) + Stop Bit(1~2Bit).一位数据所占的时间称为Baud Rate(波特率).对于大多数的MCU来讲,数据为的长度、数据校验方式(奇校验、偶校验或无校验)、停止位(Stop Bit)的长度及Baud Rate是可以通过程序编程进行灵活设定.此类接口***常用的方式就是与PC机的串口进行数据通讯.
** I2C接口:I2C是由Philips开发的一种数据传输协议,同样采用2根信号来实现:SDAT(串行数据输入输出)和SCLK(串行时钟).其***大的好处是可以在此总线上挂接多个设备,通过地址来进行识别和访问;I2C总线的一个***大的好处就是非常方便用软件通过IO口来实现,其传输的数据速率完全由SCLK来控制,可快可慢,不像UART接口,有严格的速率要求.
* Watchdog(看门狗定时器):Watchdog也是绝大多数MCU的一种基本配置(一些4位MCU可能没有此功能),大多数的MCU的Watchdog只能允许程序对其进行复位而不能对其关闭(有的是在程序烧入时来设定的,如Microchip PIC系列MCU),而有的MCU则是通过特定的方式来决定其是否打开,如Samsung的KS57系列,只要程序访问了Watchdog寄存器,就自动开启且不能再被关闭.一般而言watchdog的复位时间是可以程序来设定的.Watchdog的***基本的应用是为MCU因为意外的故障而导致死机提供了一种自我***的能力.
MCU程序的编写:
MCU的程序的编写与PC下的程序的编写存在很大的区别,虽然现在基于C的MCU开发工具越来越流行,但对于一个***的程序代码和喜欢使用汇编的设计者来讲,汇编语言仍然是***简洁、***有效的编程语言.对于MCU的程序编写,其基本的框架可以说是大体一致的,一般分为初始化部分(这是MCU程序设计与PC***大的不同),主程序循环体和中断处理程序三大部分(见图1 a 和 b),其分别说明如下:
* 初始化:对于所有的MCU程序的设计来讲,初始化是***基本也是***重要的一步,一般包括如下内容:
** 屏蔽所有中断并初始化堆栈指针:初始化部分一般不希望有任何中断发生;
** 清除系统的RAM区域和显示Memory:虽然有时可能没有完全的必要,但从可靠性及一致性的角度出发,特别是对于防止意外的错误,还是建议养成良好的编程习惯;
** IO口的初始化:根据项目的应用的要求,设定相关IO口的输入输出方式,对与输入口,需要设定其上拉或下拉电阻;对于输出口,则必须设定其初始的电平输出,以防出现不必要的错误;
** 中断的设置:对于所有项目需要用到的中断源,应该给予开启并设定中断的触发条件,而对于不使用的多余的中断,则必须给予关闭;
** 其他功能模块的初始化:对于所有需要用到的MCU的外围功能模块,必须按项目的应用的要求进行相应的设置,如UART的通讯,需要设定Baud Rate,数据长度,校验方式和Stop Bit的长度等,而对于Programmer Timer,则必须设置其时钟源,分频数及Reload Data等;
** 参数的初始化:完成了MCU的硬件和资源的初始化后,接下来就是对程序中使用到的一些变量和数据的初始化设置,这一部分的初始化需要根据具体的项目及程序的总体安排来设计.对于一些用EEPROM来保存项目预制数的应用来讲,建议在初始化时将相关的数据拷贝到MCU的RAM,以提高程序对数据的访问速度,同时降低系统的功耗(原则上,访问外部EEPROM都会增加电源的功耗).