首页头部标志
   新闻分类
   联系我们
  • 电话:0411-86632519
  • 传真:0411-86610519
  • 邮箱:dlysys@163.com


 
超声波明渠流量计原理及探讨 三十八
时间:2013/4/5 6:21:12  来源:本站原创  点击:1244

超声波明渠流量计原理及探讨  三十八

SMBus 总线提供了28 种反馈状态,来控制数据的传输。下面为常用的12 状态的寄存器值:

#define SMB_BUS_ERROR 0x00 // 总线错误(出现非法的起始位或停止位)

#define SMB_START 0x08 // 起始位发送成功

#define SMB_RP_START 0x10 // 重复起始位发送成功

#define SMB_MTADDACK 0x18 // 从机地址+写控制发送成功,且收到ACK 应答

#define SMB_MTADDNACK 0x20 // 从机地址+写控制发送成功,收到NACK

即从机无应答

#define SMB_MTDBACK 0x28 // 数据放送成功,且收到ACK 应答

#define SMB_MTDBNACK 0x30 // 数据发送成功,收到NACK

#define SMB_MTARBLOST 0x38 // 总线竞争失败

#define SMB_MRADDACK 0x40 // 从机地址+读控制成功发送,收到ACK

#define SMB_MRADDNACK 0x48 // 从机地址+读控制成功发送,收到NACK

#define SMB_MRDBACK 0x50 // 数据接收成功,ACK 成功发送

#define SMB_MRDBNACK 0x58 // 数据接收成功,NACK 成功发送

具体程序如下:

对铁电存储器的写操作程序为:

void SM_Send (char chip_select,unsigned int byte_address, char out_byte)

{

while (SM_BUSY)//等待总线空闲

SM_BUSY=1//占用总线

SFRPAGE=0X00

SMB0CN=0x44// SMBus 总线使能,

在应答周期回应ACK

BYTE_NUMBER=2// 两字节地址

COMMAND=(chip_select | WRITE)// 片选+写信号

HIGH_ADD=((byte_address >> 8) & 0x00FF)// 8 位地址

LOW_ADD=(byte_address & 0x00FF)// 8 位地址

WORD=out_byte// 要写入的数据

STO=0

STA=1// 开始传输

对铁电存储器的读操作程序为:

char SM_Receive (char chip_select, unsigned int byte_address)

while (SM_BUSY)// 等待总线空闲

SM_BUSY=1// 占用总线

SFRPAGE=0X00

SMB0CN=0x44// SMBus 总线使能,

在应答周期回应ACK

BYTE_NUMBER=2// 两字节地址

COMMAND=(chip_select | READ)// 片选+读信号

HIGH_ADD=((byte_address >> 8) & 0x00FF)// 8 位地址

LOW_ADD=(byte_address & 0x00FF)// 8 位地址

STO=0

STA=1// 开始传输

while (SM_BUSY)// 等待传输结束

returnWORD

超声波流量计

 

 

 
上一篇:超声波流量计的开发与研制探讨 二
下一篇:超声波流量计的开发与研制探讨 三