分享
 
 
 

I2C总线在神经元芯片中的应用

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

武汉大学计算机系武汉,430072

黄天戍 郝蕾 陈健 任清珍

I2C总线是一种连接简单、 使用方便的总线方式,更重要的是对于LONWORK现场控制来说,需要测量的物理量很多,而它的I/O输入出口是有限的,如果用这种两线制的总线方式无疑是可以节省I/O引脚的使用,减少了节点数,节约了开支。

1、LONWORKS神经元芯片

神经元芯片选用的是 TOSHIBA的64脚的TMPN3150B1AF,它通过11只I/O引脚与指定的外部硬件相连,这11只引脚可配置多种工作方式,从而借助于最小的外接电路实现灵活的输入输出功能。其中I2C属串行I/O 对象,它可以应用的引脚是IO-8(14脚)和IO-9(15脚),IO-8用作时钟总线,IO-9用作数据总线。

2、I2C总线

I2C(Inter Intergrated Circuit)总线是由Philips 公司开发并获得专利的一种用于IC器件之间连接的二线制总线,它通过两根线:一根串行数据线(SDA)和一根串行时钟线(SCL)在连到总线上的器件之间传送信息,它通过对器件进行软件寻址来识别每个器件,而避免了硬件片选寻址, 节省了通信线数目,根据器件的功能可以工作于发送或接收方式。SDA和SCL都是双向I/O线,通过上拉电阻接正电源,当总线空闲时,2根线都是高电平。连接总线器件的输出级必须是开路或集电极开路,以具有线"与"功能。I2C总线上数据传送的最高速率为100Kb/s,连到总线上器件数量仅受总线电容400pF的限制 。送到 SDA线上的每个字节必须为8位,每次传送的字节数不限,每个字节后面必须跟1个响应位。数据传送过程中,确认数据是必须的。I2C总线控制完全由竞争的主器件送出的地址和数据决定。

3、 LONWORKS神经元芯片与AD7416利用I2C总线进行数据通信的硬件连接

AD7416是低功耗10位数字温度传感器,它包括一个带隙温度传感器、一个10位AD 转换器和一个门限可编程的用来比较测量温度的比较器。 AD7416有5个内部寄存器,其中四个是数字寄存器(我们用到了温度寄存器),一个是地址指针寄存器。 地址指针寄存器是一个8位寄存器,它储存指向四个数据寄存器之一的地址。 对于每一次串行写操作的第一个数据字节是数据寄存器的地址,这就是随后的数据字节要写入的地址。

为实现LONWORKS神经元芯片与AD7416之间进行I2C总线数据通信,将神经元芯片上特许的I2C总线引脚IO-9与AD7416的SDA相接,IO-8与AD7416的SCL相接,通过编程产生操作时序从而实现Neuron芯片对AD7416有关寄存器的写入和读出,完成对AD7416工作参数的设定以及温度值的读取。AD7416串行总线地址的最低三位是可选的,这就可以在一条总线上连接多达8个AD7416,这里只用到了一个AD7416片子,因此把A0、A1、A2全接地,如果不止一个AD7416,那么就要把A0~A2接不同的信号来选择要通信的片子。如所有的兼容器件一样,有一个7 位串行地址,这个地址的高4位设定为1001,而低三位就是由A2~A0来设置。要特别注意的是:为了避免端口吸收太大的电流,使芯片发热而影响温度读数,数据总线和时钟总线一定要接足够大的上拉电阻。

其硬件连接原理图如图1所示。

图1 Neuron芯片3150与AD7416进行数据通信的硬件连接图

4、 LONWORKS神经元芯片与AD7416利用I2C总线进行数据通信的软件编程

AD7416是作为I2C总线上的从设备,在对 AD7416 寄存器进行写操作时,Neuron芯片为主设备发送器, AD7416为从设备接收器;在对AD7416 寄存器进行读操作时,Neuron 芯片为主设备接收器, AD7416 为从设备发送器,Neuron芯片对AD7416 读写操作的地址分别为48H、C8H, 内部四个数字寄存器的地址为00H~04H, 在进行操作时作为子地址使用。

Neuron芯片与AD7416 进行数据通信的软件编程语言是Neuron C。

Neuron C是专门为Neuron 芯片设计的编程语言,它是从ANSIC中派生出来的并进行了增删, 使其直接支持的固件,Neuron C 编程主要是Neuron芯片的事件调度、I/O对象、 网络变量以及显示消息。LONWORKS神经元芯片和AD7416的通信过程如下:首先通过完成一个单字节的写操作向地址指针寄存器写入温度寄存器的地址,然后通过两个字节的读操作从温度寄存器中读取10位温度值。

LONWORKS神经元芯片通过对AD7416进行读写操作的源程序如下:

#define AD7416 0x48

#define AD7416_1 0xc8

#define C_TO_K 2740

network output SNVT_temp returnvalue;

IO_8 i2c io_i2c_bus;

boolean retval;

unsigned long int dbuff[2];

stimer repeating timer1;

when(timer_expires(timer1))

{

unsigned int control2;

control2=0x00;

//读A/D之前,首先写一个控制字到AD7416的地址指针寄存器

retval=io_out

(io_i2c_bus,&control2,AD7416,1);

//从温度寄存器中读取数据

retval=io_in(io_i2c_bus,dbuff,AD7416_1,2);

returnvalue=(dbuff[0]*10)/256+

C_TO_K;

}

when(reset)

{

timer1=1;

}

5、 结束语

本文论述的虽然是针对Neuron 芯片的I2C总线的编程方法,但可作为在单片机、微处理器及PC 机等多种应用系统中对I2C总线编程的详细参考。

本文摘自《电子查询网》

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有