用I2C总线实现AD7416的多点温控系统
,因此,由调用该读/写子程序及满足调用操作的初始化操作的三条命令即构成软件包的应用界面,即 MOV SLA,#SLAW/SLAR ;寻址字节存放单元存放总线 ;上节点寻址并确定数据传送方向 MOV NUMBYT,#N ;传送字节数存储单元存放 ;需要传送的N字节 LCALL WRNBYT/RDNBYT:调用读/写N字节数据子程序 三条初始化命令决定了CPU对总线上节点的寻址和数据传送方向以及需要传送的字节数N。在具体应用该软件包时,只需要对软件包的应用界面进行操作即可,从而避免了设计者必须从I2C总线原理上对扩展的I2C总线外围器件进行繁琐的应用程序设计。 系统程序流程如图4所示。 读两字节的温度值寄存器时序。
3 远程离温度数据采集的实现方法
本实例中要求测量近20m的温度节点,为了简化系统硬件设计,没有使用缓冲器进行驱动;而通过加适当的上拉电阻,以获得一定的上拉电流使信号采集可靠。在实际应用系统中,上拉电阻值由I2C总线系统中信号所需的上升时间决定。近似地认为整修系统的时间常数为1μs。对于每个分别的总线,其上拉电阻计算式为 Rp=1μs/(Cd+Cw) 式中:Cd为连到每个总线上的器件电容的和;Cw为每个线上的全部导线电容和杂散电容。 系统中电容估算:I2C器件电容约为80 pF;杂散电容约为80 pF;导线电容约为1500 pF。因此,总线系统的上拉电阻为 Rp=1μs/(80pF+80pF+1500pF)=602Ω 为使数据采集可靠,选用了Rp=510Ω的电阻。由于上拉电阻受到最大拉电流限制,所以应检查上拉电流不超过30mA。本例上拉电流(5-0.4)V/Rp=9.02mA<30mA,检查通过。 调试中发现,降低上拉电阻阻值后大大改善了通信情况,但有时仍然会有误码现象出现,于是在软件上降低了通信的频率。将频率由400 kb/s降低到200 kb/s,通过放慢通信速度来提高通信可靠性。实际证明,处理之后的温度值读取稳定可靠。
结束语 笔者用AD7416所设计的多路温湿度循环检测控制仪,温度检测准确可靠,不易受环境干扰,为整个系统的正常运行提供了可靠性保障。
- 基于WinCE的I2C驱动程序设计(04-24)
- 一种基于DSP的张力、深度、速度测量系统(04-15)
- DSP虚拟I2C总线软件包的设计及应用实例(05-29)
- 基于DSP和OZ890的电池管理系统设计(01-12)
- 基于DSP和OZ890 的电池管理系统设计(03-13)
- I2C总线及EEPROM的Linux驱动程序的设计(01-05)