ARM7学习-实时时钟RTC

LPC2138内部含有RTC电路,其RTC时钟可由独立的32.768kHz 振荡器或基于 VPB 时钟的可编程预分频器来提供。使用LPC2138内部的RTC电路,需要把RTC 专用的电源管脚 Vbat接上3.3V的电源。

编程环境:MDK-ARM Professional 4.72a

仿真环境:Protues 8.0

ARM7芯片:LPC2138

SPI芯片:74HC595(串转并)

每次按下按键,四个数码管将显示不同的数字,数字分别显示的是年、月日、时分、秒星期。

按键采用外部中断0,接口采用SPI接口。

ARM7 RTC

程序修改自:《ARM嵌入式系统设计与仿真》

ARM7 I2C学习–LPC2138读写24C02

花费了好长时间终于把ARM7 I2C协议读写AT24C02程序编写成功了,期间犯了好多错误,导致搞了这么长时间,现在想起来真是郁闷,不过更让人郁闷的是昨天查英语6级的成绩,又一次没过,下一次又要改革,不知道猴年马月才能过呀!唉,跑题了,还是赶快进入正题吧!

编程环境:Keil4 for Arm

仿真工具:Protues 8.0

ARM7芯片:LPC2138

24C02芯片:FM24C02F(400KHz/10m)

有关ARM7的I2C协议和24C02读写规则请参照相关使用手册。

ARM7 I2C协议

ARM7采用主发送和主接收模式。

注意事项:

1、I2C总线必需接上拉电阻

(这一点我仿真的时候搞忘了,结果无法写入和读出数据,以为程序错误,浪费了好长时间)

2、仿真的时候注意24C02的最大时钟频率

(最开始的时候我是用FM24C02仿真的,没有发现它的最大时钟频率限制为100KHz,而我设置的时钟频率是大于100KHz,结果仍然无法写入和读取数据,搞得我把程序检查了好几遍,到最后要放弃的时候,才发现,然后改成了FM24C02F,郁闷啊!)

3、写入数据以后,需要有足够的延时,要不是读不出数据的,因为24C02有写入时间,延时太短,无法成功写入。

ARM7 I2C总线

Zigbee学习笔记之基础知识

Zigbee简介

ZigBee 是一种新兴的短距离、低功耗、低数据速率、低成本、低复杂度的无线网络技术;

ZigBee 采取了 IEEE 802.15.4强有力的无线物理层所规定的全部优点 :省电、简单、成本又低的规格;ZigBee增加了逻辑网络、网络安全和应用层;

ZigBee 的主要应用领域包括无线数据采集、无线工业控制、消费性电子设备、汽车自动化、家庭和楼宇自动化、医用设备控制、远程网络控制等场合;

ZigBee 无线 可使用的频段有 3 个,分别是 2.4GHz 的 ISM 频段、欧洲的 868MHz 频段、以及美国的 915MHz 频段,而不同频段可使用的信道分别是 16 、 1 、 10 个,在中国采用2.4G频段,是免申请和免使用费的频率。

Zigbee网络拓补结构

zigbee网络拓扑结构

ZigBee技术具有强大的组网能力,可以形成星型、树型和MESH网状网,可以根据实际项目需要来选择合适的网络结构;

MESH 网状网络拓扑结构的网络具有强大的功能,网络可以通过“多级跳”的方式来通信;该拓扑结构还可以组成极为复杂的网络;网络还具备自组织、自愈功能;

星型和族树型网络适合点多多点、距离相对较近的应用。

Zigbee网络设备类型

在Zigbee网络中存在三种逻辑设备类型:协调器、路由器、和终端设备。ZigBee 网络协调器也就是网络的中心节点; ZIGBEE 全功能设备(FFD)也就是网络中的路由或中继; 精简功能设备(RFD)也就是网络中的终端节点。 Zigbee网络由一个协调器以及多个路由器和多个终端设备组成。

协调器是整个网络的核心,它最主要的作用是启动网络,其方法是选择一个相对空闲的信道,形成一个PANID。它也会协助建立网络中的安全层以及处理应用层的绑定,当整个网络启动和配置完成之后,它的功能退化为一个普通的路由器。

路由器的主要功能是提供接力作用,能扩展信号的传输范围,因此,一般情况下它应该一直处于活动状态,不应休眠。

终端设备可以睡眠或者唤醒,因此可以用电池来供电。

Zigbee相关名词

PANID的出现一般是伴随在,确定信道以后的。PANID其全称是Personal Area Network ID,网络的ID(即网络标识符),是针对一个或多个应用的网络,一般是mesh或者cluster tree两种拓扑结构之一。所有节点的panID唯一,一个网络只有一个PANID,它是由pan协调器生成的,PANID是可选配置项,用来控制ZigBee路由器和终端节点要加入那个网络。文件f8wConfg.cfg中的 ZDO_CONFIG_PAN_ID 参数可以设置为一个 0~0x3FFF 之间的一个值。协调器使用这个值,作为它要启动的网络的 PAN ID。而对于路由器节点和终端节点来说只要加入一个已经用这个参数配置了PAN ID的网络。如果要关闭这个功能,只要将这个参数设置为0xFFFF。 要更进一步控制加入过程,需要修改 ZDApp.c 文件中的ZDO_NetworkDiscoveryConfirmCB 函数。当然了,如果ZDAPP_CONFIG_PAN_ID被定义为0xFFFF,那么协调器将根据自身的IEEE地址建立一个随机的PANID(0~0x3FFF),XXX经过试验发现,这个随机的PANID并非完全随机,它有规律,与IEEE地址有一定的关系:要么就是IEEE地址的低16位,要么就是一个与IEEE地址低16位非常相似的值。如IEEE地址为0x8877665544332211,PANID很有可能就是2211,或相似的值;IEEE地址为0x8877665544337777,PANID很有可能就是3777,或其它相似的值。

端点(endpoint):一个八位的数,用来定义不同的应用。一个设备包含了最多240个应用程序对象,每个应用程序对象在OSAL中对应了一个任务,当网络层接收到信息以后如何决定将此信息传递给哪个任务呢?ENDPOINT决定了传递方向。其中endpoint 0是每个设备都必须具有的,是用于寻址设备配置文件,是ZDO和APS之间的一个重要接口。endpoint 0xff是用在广播时,寻址所有活动的端点。在两个设备进行无线通信时,端点号必须相同,否则数据无法送达目的地址。

端点是一种网络通信中的数据通道,它是无线通信节点的一个通信部件,如果选择“绑定”方式实现节点间的通信,那么可以直接面对端点操作,而不需要知道绑定的两个节点的地址信息。端点的值和IEEE长地址(MAC地址)、16位短地址一样,是唯一确定的网络地址,通常结合绑定功能一起使用

簇(cluster):就是属性的集合。当一个任务接收到消息(这里所说的消息是指无线网络之中的数据)之后,一定会对消息进行处理。但是我们的应用肯定 不会盲目的处理所有消息,消息一定会被分门别类。“簇”代表了消息的类型,为与相同簇的消息具有相同的类型,而这个类型可以被用户自定义。像我们如果要控 制两组灯的开关,这时我们可以分配两个不同的CLUSTERID来区分,实现对不同灯的控制。注意接收设备的输入簇需与发送设备的输出簇相对应。

zigbee常见名词

绑定是一种两个(或者多个)应用设备之间信息流的控制机制。在最新的Z-Stack发布版本中,它被称为资源绑定,所有的设备都必须执行绑定机制。

绑定允许应用程序发送一个数据包而不需要知道目标地址。APS层从它的绑定表中确定目标地址,然后将数据继续向目标应用或者目标组发送。

信道:Zigbee 2.4GHz的射频频段被分为16个独立的信道。每个设备都有一个DEFAULT_CHANLIST的默认信道集。协调器扫描自己的默认信道集合、并选择最小的信道作为自己所建网络的信道。中断点和路由器也要扫描默认信道集并选择一个信道上已经存在的网络加入。