发表于:2002-06-11 12:20:00
3楼
抄表控制器的开发和应用
摘 要 主要介绍抄表系统中抄表控制器的开发方案和应用。
关键词 lonworks技术,神经元芯片,面向对象,节点
概 述
echelon公司开发的lonworks网络技术,在国内已经广泛应用到各个领域,包括工业自控、交通运输、楼宇自控等等。国内的oem厂商已经积累了很多的二次开发的宝贵经验,大大增强了我们对国外先进技术的消化吸收能力。本文主要介绍3150的i/o对象之一 i2c object 。
一、 TMPN3150 i/o口的面向对象开发技术
Lonworks的技术核心之一体现在neuron chip 3150身上,而3150的主要特点就是面向对象开发。在神经元芯片3150的系统映像区(system image)
中包括调度程序、lontalk 协议、函数库、34种i/o对象。 其中的i/o对象就是开发节点时3150的11个io脚的“驱动程序“可以分为四类:
1、 直接i/o对象:包括位、字节、电平检测 、、、
2、 并行i/o对象:master/slave、token passing、、、
3、 串行i/o 对象:bitshift、i2c、neuronwire(spi)、touch、、、
4、 定时器/计数器i/o对象:timer/counter、triac、、、、
开发过程中,不需要考虑具体的接口和时序,把主要的精力都放在应用开发上。大大的加快了节点开发的进程。例如:
计数器/计时器I/O 对象-------------------------Triac输出;
实现的功能:根据输入触发信号控制输出脉冲信号的延时。
输出脉冲25微秒宽、常低。
// 定义i/o口 、triac指定i/o对象、sync(IO_4)指定同步输入脚
IO_0 output triac sync(IO_4) triac_control;
//实现输出 同步输入信号下降沿延时8.3ms 输出25微秒宽的可控硅的
//触发信号。
io_out(triac_control,325);
在应用程序中直接应用输出信号,大大减少了开发i/o对象的时间。
在开发智能节点的过程中,国内很多厂商在一个节点中集中了很多功能,来降低智能节点的性价比。实际上这种做法不是一种值得提倡的二次开发经验。3150 i/o口是事件驱动,响应比较慢,对于快速信号会出现丢失现象。3150内置watchdog 调度程序自动管理。一个事件的执行时间不得大于watchdog的更新时间否则会引起复位。Neuron C中提供了更新watchdog 的函数。在较大的任务中调用以免引起复位。
二、 i2c接口eeprom 24C02简介:
24c02是采用cmos工艺制成的2k*8位的电可擦除存储器。
工作电源:5.0(4.5----5.5V)DC
自定时写周期:不超过 10ms 、典型周期 5ms
页写入方式: 8 byte ;
数据保持时间:100years;
操作温度: -55°C to +125°C
储藏温度: -65°C to +150°C
引脚说明:
SCL: I2C接口的时钟管脚;
SDA: I2C接口的数据管脚;
A0,A1,A2:芯片地址设置管脚 ;
WP: 写保护脚;
TEST:测试脚;
VCC:电源电压
VSS:接地;
NC:not connect ;
芯片地址:
MSB LSB
1 0 1 0 A2 A1 A0 R/W
其中:1010是芯片固定地址,A2、A1、A0可设的。总线最多可联8片24C02;
与51系列单片机的接口:
硬件接口:没有I2C接口的51单片机 (2051)
只需将SCL和SDA加各一上拉电阻,于两个IO口连接即可。
有I2C接口的51单片机 (764)
将SCL和SDA加各一上拉电阻,于I2C的SCL和SDA连接即可。
软件接口:
无论使用汇编还是C51,都必须先调试于24C02的接口程序。有I2C接口的单片机的接口程序也需要调试一段时间。而且必须要了解I2C的接口时序。
三、 TMPN3150的I2C object应用:
I2C输入\输出对象:在IO0---IO10中,管脚IO8、IO9为I2C总线的SCL、SDA,
IO8和IO9硬件是开漏(OPEN_DRAIN)状态.
3150只能作为主控制器(MASTER)
关于I2C OBJCET 的定义
IO_8 i2c 对象名; //定义I/O对象
return_value=io_in(i2c对象名,输入数据指针,设备地址(i2c),读字节数);
//输入操作
return_value=io_out(i2c对象名,输入数据指针,设备地址(i2c),写字节数);
//输出操作
返回值0:数据传输失败(设备不在总线上,SCL开始为低);1:数据传输成功;
I2C器件的地址参数:右对齐的七位设备地址
它的含义就是在控制字中的R/W位,由输入输出函数来控制。
例如:器件地址: 1 0 1 0 0 0 0 R/W. 0XA1读,0XA0写 I2C OBJECT地址 0 1 0 1 0 0 0 0 0X50 I2C的器件地址
例程:
#define MEM_ADDR 0X50 //A2—A1—A0---GND
IO_8 output bit b_SCL;
IO_9 output bit b_SDA;
IO_8 i2c obj_i2c_bus;
void bus_reset(void)
{
io_out(b_SCL,1);
io_out(b_SDA,1);
delay(400); //延时 10ms
}
when(………)
{
Boolean re_data;
unsigned int addr,data[8];
addr=0x00; //24c02内部存储器数据地址
redata=io_out(obj_i2c_bus,&addr ,MEM_ADDR,1);//输出操作地址
if(redata==1)
io_in(obj_i2c_bus,data ,MEM_ADDR,8); //读一页
}
when(………)
{
Boolean re_data;
unsigned int addr,data[8];
addr=0x00; //24c02内部存储器数据地址
redata=io_out(obj_i2c_bus,&addr ,MEM_ADDR,1);//输出操作地址
if(redata==1)
io_out(obj_i2c_bus,data ,MEM_ADDR,8); //写 一页
}
when(………)
{
//读测试失败
bus_reset( );
}
结束语:
基于面向对象的应用开发是lonworks技术的特点,在开发过程中感到这项技术的益处lonworks技术毕竟是国外技术,国内的二次开发商有很多地方受到不同程度的限制。
在国内应用比较成熟的51系列单片机,中逐步应用这项技术,才是我们真正消化国外先
进技术的必经之路