EM250硬件资源及应用

发布 2021-04-10 21:38:28 阅读 5460

1 i/o

2 外部中断。

3 定时器。

4 通讯( uart / i2c / spi )

5 存储器( flash / simulate eeprom)

1 i/o1)通过写gpio_cfg,最多可配置17个gpio: gpio0~gpio16。具体设置见em250datasheet 第29页**:

2)gpio的配置用到的寄存器还有:

gpio_clrh gpio_clrl

gpio_seth gpio_setl

gpio_dirh gpio_dirl

gpio_dbg

gpio_pdh gpio_pdl

gpio_puh gpio_pul

3)pti的功能:

pti_en和pti_data共用gpio4和gpio5

在物理层,将模块收发的数据包发出来,通过insight adapter传送给pc,以适时跟踪网络行为,这个功能将用于insight adapter capture。如果禁能pti,用insight adapter capture时,将收到不明数据。为保证capturer 的质量,当使能pti时,gpio4和gpio5将不可用,也不要接其它外围器件。

4)adc功能:

当使能adc功能时,除了配置gpio_cfg外,相关引脚(26,27,29,30) 还应配置成输入态。定时器的输入捕捉,脉冲输出一样,也应适当配置。

5)在hal/micro/xap2b/em250/board/中设置reset后的i/o初始状态:

#define powerup_gpio_cfgxx

#define powerup_gpio_dirhxx

#define powerup_gpio_dirlxx

#define powerup_gpio_clrhxx

#define powerup_gpio_clrlxx

#define powerup_gpio_sethxx

#define powerup_gpio_setlxx

#define powerup_gpio_puhxx

#define powerup_gpio_pulxx

及进入睡眠后各i/o状态。

2 外部中断。

1)共有四个普通外部中断口(irqa、irqb、irqc、irqd)

2)要配置的寄存器有:

int_cfg int_gpioflag int_miss

gpio_intcfga gpio_intcfgb gpio_intcfgc gpio_intcfgd

3)当有中断发生时,系统自动调用hal/micro/xap2b/ 中的函数:

halgpioisr(int16u interrupt, int16u pcbcontext)

在此函数中编写用户的io中断服务程式。

4)znetstack的样本程式中,定义了两个按钮button0,button1,使用irqa,irqc,双沿触发。

中断初始程式,写在hal/micro/xap2b/

halinternalinitbutton()

里面用到的宏在hal/micro/xap2b/em250/board/里定义。

3 定时器。

1) 共有两个普通定时器timer1,timer2

2)相关寄存器:

int_cfgint_tmrcfg,tmr1_cfgtmr1_cnttmr1_top

tmr1_cmpcfga tmr1_cmpcfgb

tmr1_cmpa tmr1_cmpb

tmr1_capcfga tmr1_capcfgb

tmr1_capa tmr1_capb

tmr2_cfgtmr2_cnttmr2_top

tmr2_cmpcfga tmr2_cmpcfgb

tmr2_cmpa tmr2_cmpb

tmr2_capcfga tmr2_capcfgb

tmr2_capa tmr2_capb

以上寄存器相关用法见em250 datasheet 5.4节。

3)当有定时器中断发生时,系统自动调用hal/micro/xap2b/ 里的:

haltimerisr()

在此函数中编写用户的定时中断服务程式。

4)znetstack的样本程式中,用timer1做了一个蜂鸣器,初始程序在hal/micro/xap2b/

halplaytune_p()

如需要用到timer1,应清空halplaytune_p()的**。

4 通讯( uart / i2c / spi )

1)共有两个通讯口:sc1和sc2

其中:sc1可被配置成uart、i2c master、spi master

sc2可被配置成i2c master、spi master、spi sl**e

配置方法参考第一节gpio口的配置。

2) 当sc1中断发生时,系统自动调用:halinternalsc1isr()

当sc2中断发生时,系统自动调用:halinternalsc2isr(),在上面的函数中,编写用户的中断服务程式。

3)如果想将sc1配置成uart,在app/sensor/的主程式中运行:

emberserialinit(0, baud_19200, parity_none, 1);

emberserialinit(1, baud_19200, parity_none, 1);

其中:baud_19200是通讯速度。

在app/sensor/ 中:

#define app_serial 1

改为。#define app_serial 0

port0是虚拟端口。app_serial用于发送一些状态信息。

4)如果要发送数据则运行:

emberserialwritedata(int8u port, int8u *data, int8u length)

5)如要接收数据则运行。

emberserialreadbyte(int8u port, int8u *databyte)

每次从缓冲区读一个字节。

如果缓冲区内有数据,则返回ember_success(*databyte有效)。

查询缓冲剩余空间:

emberserialwrite**ailable(port)

缓冲区大小。

emserialtxqueuesizes[port]

5 存储器( flash / simulate eeprom)

1)内部有128k byte flash,最后8k 虚拟成eeprom

2) flash 地址分配见hal/micro/xap2b/em250/

3) 虚拟eeprom的使用:

使用虚拟eeprom储存一个大小为e_size的数据e_data.

a) 打开文件stack/config/

b) 找到 //app creators

c) 在其下写。

#define creator_ e_data 0xe458

c) 找到 typedef int8u toktypestackkeytable[25]

d) 在其下写。

typdef int8u toktypeedata[12];

e) 找到 define_indexed_token(stack_key_table,toktypestackkeytable,ember_key_table_token_size,0,})

f) 在其下写。

define_indexed_token (e_data,toktypeedata,e_size,0,})

g) 写虚拟eeprom:

halcommonsetindexedtoken(token_ e_data, index, &data );

halstacksetindexedtoken(token_ e_data, index, &data, size );

h) 读虚拟eeprom:

halcommongetindexedtoken(&data, token_ e_data, index );

halstackgetindexedtoken(&data, token_ e_data, index, size );

计算机硬件技术及应用

计算机硬件技术及应用期末试卷。学号姓名成绩 第1部分客观题。1.软件与硬件的等价性原理说明软硬件在功能 性能和成本等方面是等价的。2.无符号数在前面加零扩展,数值不变 有符号数前面进行符号扩展,位数加长一位 数值增加一倍。3.c语言变量类型float,对应ieee754标准规定的单精度浮点数。4.半...

教师计算机硬件及应用基础

一 说明。一 课程性质。信息类课程,提高中小学教师对计算机基础硬件的认识 计算机日常维护的能力及计算机应用的水平。二 教学目的。本课程目的是帮助学员掌握计算机的硬件组成 日常计算机的维护 多 平台的使用及维护,能使用powerpoint制作简单的课件,能深入掌握校园网的应用及网络搜索的技巧。三 教学...

数字化教学及资源应用培训心得体会

精品文档。数字化教学及资源应用培训心得体会。为了让多 技术更好地为教学服务,提高教师利用 班班通 设备和资源进行课堂教学的能力,我们少林路小学在多 教室组织老师参加了数字化教学及教育资源应用培训,通过这次学习,让我深刻认识到数字化学习是信息时代重要的学习方式。数字化学习课程比其他学科有条件为学生提供...