SCL的第八个下降沿,TSM将强制PWM/SDA低,以确认最后收到的
字节。Thdac(SD)是SCL的第九个下降沿之后TSM释放PWM/SDA的时间
所以总经理可以继续沟通。Tsuac(MD)是第八次坠落后的时间
SCL的边缘,TSM将释放PWM/SDA,以便MD可以确认最后接收到的
字节。Thdac(MD)是在SCL的第九个下降沿之后,TSM将控制
这样它就可以继续传输下一个字节。(用于
使用最新计时–主设备确认时使用MD;从设备确认时使用SD
设备正在确认)。
有关其他计时,请参阅上面的SMBus设备的电气特性。
图7 SMBus计时。
SMBus与TSM的通信
德克斯特研究中心•美国密歇根州德克斯特市休伦河大道7300号,邮编48130•电话:+1(734)426-3921©_
8675版本NC SMBus App Note.doc第16页,共35页2010年7月
6.3详细通信说明
RAM和EEPROM都可以读取32 x 16的大小。如果RAM被读取,则数据除以
2,由于RAM中有一个符号位(例如,Tobj1-RAM地址0x07h将在
当目标温度从-70.01°C上升到+382.19°C时,0x27ADh为0x7FFF)。MSB读取
from RAM是线性化温度(Tobj1、Tobj2和Ta)的错误标志(高激活)。这个
原始数据(例如,红外传感器1数据)的MSB是符号位(符号和幅度格式)。一封信
0x0000必须在写入EEPROM之前完成,以便擦除EEPROM单元内容。参考
EEPROM工厂校准的详细说明需要保存的EEPROM位置
不变。
注*:xxxxx表示要读/写的内存映射地址的5个lsbit。
注意**:行为类似于read命令。TSM在16位数据之后返回PEC,其中只有4位是有意义的
如果MD需要,它可以在第一个字节后停止通信。
读取到读取标志(RAM或EEPROM)之间的区别在于后者没有重复的开始
比特。读取的标志是:
数据[15]–EEBUSY–上一次写入/擦除EEPROM访问仍在进行中。高度活跃。
数据[14]–未使用
数据[13]-EE_DEAD–出现EEPROM双重错误。高度活跃。
数据[12]–INIT–POR初始化例程仍在进行中。低活性。
数据[11]–未实现。
数据[10..0]–全部为零。
读取标志是一种诊断功能。无论这些标志如何,都可以使用TSM。
表4
表5
操作码命令
000x xxxx*RAM访问
001x xxxx*EEPROM访问
1111_0000**读取标志
1111_进入睡眠模式
内存(32 x 16)
名称操作码
和
地址
阅读
接近
工厂预留0x00h是
… … …
环境传感器数据0x03h是
红外1传感器数据0x04h是
红外2传感器数据0x05h是
Ta校准数据0x06h是
TOBJ校准数据0x07h是
Tobj2校准数据0x08h是
工厂预留0x09h是
… … …
工厂预留0x1Fh是
EEPROM(32 x 16)
名称操作码和
地址
写
接近
托马斯
0x20h是
托明
0x21h是
PWMCTRL 0x22h是
Ta范围0x23h是
发射率校正
系数(Ke)
0x24小时是
配置寄存器1 0x25h是
工厂预留0x26h否
… … …
工厂预留0x2Dh否
SMBus地址0x2Eh是
工厂预留0x2Fh是
工厂预留0x30h否
… … …
工厂预留0x38h否
工厂预留0x39h是
工厂预留0x3Ah否
工厂预留0x3Bh编号
身份证号码0x3Ch否
身份证号码0x3Dh否
身份证号码0x3Eh否
身份证号码0x3Fh号码
SMBus与TSM的通信
德克斯特研究中心•美国密歇根州德克斯特市休伦河大道7300号,邮编48130•电话:+1(734)426-3921©_
8675版本NC SMBus App Note.doc 2010年7月35日第17页
所有字节都先用MSb发送和接收。
SMBus从RAM读取的格式为:
读取字(取决于命令–RAM或EEPROM)。
图8显示为Tobj1。
读取RAM 0x07h,结果=0x3B49h,PEC=0x5Ch。
RAM内存是通过SMBus只读的。由于一个符号位,读取的数据除以2
(Sn)在RAM中(例如,TOBJ1-RAM地址0x07h将在0x27ADh到
0x7FFF,目标温度从-70.01°C上升到+382.19°C)。从RAM读取的MSb
是线性化温度(TOBJ1、TOBJ2和Ta)的错误标志(高激活)。的MSb
原始数据(例如,红外传感器1数据)是符号位(符号和幅度格式)。
伪代码示例:读取RAM地址0x07(Tobj1)
一。发送起始位
2。发送从地址(例如0x00)*+Rd-Wr位**
三。发送命令(0b000x_xxxx+0b0000_0111->0b0000_0111)
四。发送重复起始位
5个。发送从地址+Rd \-Wr位**
6。读取数据字节低(主机必须发送确认位)
7号。读取数据字节高(主机必须发送确认位)
8个。读取PEC(主机可以发送ACK或NACK)
9号。发送停止位
注*:任何TSM都将响应地址0x00注**:位Rd \-Wr对TSM没有意义
从地址Wr A命令Sr从地址Rd A
1 7 1 1 8 1 7 1 1 1 1
数据字节低A数据字节高A PEC A P
8 1 8 1 8 1 1 1 1起点
奴隶
地址=0
读取Ram
0x07小时
起点
重复
从机地址
读取=1
最低有效位
0x49小时
最高有效位
0x3Bh型
PEC公司
0x5小时
SMBus与TSM的通信
德克斯特研究中心•美国密歇根州德克斯特市休伦河大道7300号,邮编48130•电话:+1(734)426-3921©_
8675版本NC SMBus App Note.doc第18页,共35页2010年7月
读取RAM或EEPROM框图
读取Ram EEPROM
发送起始位
从从属服务器确认
不
是的
发送从机地址
发送命令
发送停止位
发送重复开始
发送从机地址
从从属服务器确认
不
是的
读取低数据字节
主发送确认
读取高数据字节
主发送确认
读取PEC字节
主发送
阿克纳克
发送停止位
结束读取
从从属服务器确认
不
是的
SMBus与TSM的通信
德克斯特研究中心•美国密歇根州德克斯特市休伦河大道7300号,邮编48130•电话:+1(734)426-3921©_
8675版本NC SMBus App Note.doc第19页,共35页2010年7月
在EEPROM中写入SMBus的格式为:
写入字(取决于命令–RAM或EEPROM)。
图9在写入零后写入PWMCTRL以擦除EEPROM单元。
将0xC807写入EEPROM地址0x22h,PEC=0x88h。
在应用程序模式下,只有9个单元格可供写入。试图写入无法访问
EEPROM单元不会导致任何变化。在写入之前,必须执行擦除操作。删除
操作只是在EEPROM单元中写入零。写入/删除后需要5毫秒
要写入/删除的值。在写入之后,强烈建议通过以下方式重新启动设备
关闭/打开电源或将传感器置于休眠状态。
伪代码示例:
擦除EEPROM地址0x0E(SMBus地址)
一。发送起始位
2。发送从地址(例如0x00)*+Rd-Wr位**
三。发送命令(0b001x_xxxx+0b0000_1110->0b0010_1110)
四。发送低数据0x00
5个。发送高数据0x00
6。发送PEC 0x6F
7号。发送停止位
8个。等待5ms(这次需要删除单元格)
在EEPROM地址0x0E(SMBus地址)中写入0x5A
一。发送起始位
2。发送从地址(例如0x00)*+Rd-Wr位**
三。发送命令(0b001x_xxxx+0b0000_1110->0b0010_1110)
四。发送低字节0x5A
5个。发送高字节0x00(EEPROM地址0x0E的高字节没有意义)
6。发送PEC 0xE1
7号。发送停止位
8个。等待5ms(此时需要写入单元格)
9号。关闭/打开模块电源以重置TSM(在此之后,TSM将响应新的从机
地址0x5A)***
从地址Wr A命令A
1 7 1 1 8 1
..…
数据字节低A数据字节高A PEC A P
8 1 8 1 8 1 1 1 1
..…
SMBus与TSM的通信
德克斯特研究中心•美国密歇根州德克斯特市休伦河大道7300号,邮编48130•电话:+1(734)426-3921©_
8675版本NC SMBus App Note.doc第20页,共35页2010年7月
写入/擦除EEPROM框图
写EEPROM
发送起始位
从从属服务器确认
不
是的
发送从机地址
发送命令
发送停止位
发送低数据字节
从从属服务器确认
不
是的
发送高数据字节
从从属服务器确认
不
是的
从从属服务器确认
不
是的
发送PEC字节
从从属服务器确认
不
是的
发送停止位
结束写入
等待5毫秒
重新启动TSM
SMBus与TSM的通信
德克斯特研究中心•美国密歇根州德克斯特市休伦河大道7300号,邮编48130•电话:+1(734)426-3921©_
8675版本NC SMBus App Note.doc 2010年7月35日第21页
7号。睡眠模式
进入休眠模式的SMBus事务的格式为:
伪代码示例:将TSM置于睡眠模式
一。发送起始位
2。发送从地址(例如0x00)*+Rd-Wr位**
三。发送命令0xFF
四。发送PEC字节0xF3
5个。发送停止位
6。将SCL线置于低电平
TSM可以通过SMBus发送的“进入睡眠模式”命令进入睡眠模式
接口。此模式不适用于5伏电源版本。将电流消耗限制在
2.5μA(典型),睡眠时SCL-pin应保持较低水平。TSM恢复默认通电状态
通过将SCL引脚设置为高,然后将PWM/SDA引脚设置为低(至少t)来实现模式(通过端口复位)
滴滴涕
>33毫秒。
如果EEPROM配置为脉冲宽度调制(EN_脉冲宽度调制
高),之后将选择脉宽调制接口
唤醒,如果PWM控制[2],PPODB为1
TSM将输出一个带
推拉输出。
图10进入睡眠模式。
图11退出睡眠模式。
退出睡眠模式后,数据在0.25秒后可用(典型值)。对于第一次测量
跳过IIR滤波器,之后所有测量通过EEPROM中配置的数字滤波。
从地址Wr A命令A
1 7 1 1 8 1
佩卡
81号
SMBus与TSM的通信
进入睡眠模式框图
进入睡眠状态
发送起始位
从从属服务器确认
不
是的
发送从机地址
发送命令
发送停止位
发送PEC字节
从从属服务器确认
不
是的
从从属服务器确认
不
是的
发送停止位
结束睡眠
设置SCL低
SMBus与TSM的通信出于可靠性考虑,TSM将ESD钳位二极管与Vdd和Vss结合在一起。因此
断电的TSM将加载SMBus。这与SMBus规范不同。在powermanaged中
因此,当需要SMBus时,需要保持TSM通电。这个
睡眠模式没有问题。
SCL引脚的辅助功能为时钟脉冲(仅适用于5伏版本)添加下冲
如下图所示(见图13)。这种欠冲是由
片上合成齐纳二极管。典型的下冲持续时间约为15μs.An
SCL线电抗的增加有可能增加这种效应。未及点不影响
TSM识别SCL上升沿,但可能影响非TSM从站的正常运行
在同一辆公共汽车上。
图13由于片内齐纳二极管而导致的SMBUS SCL线未及。
(仅限5伏版本)
SMBus与TSM的通信
德克斯特研究中心•美国密歇根州德克斯特市休伦河大道7300号,邮编48130•电话:+1(734)426-3921©_
8675版本NC SMBus App Note.doc 2010年7月35日第24页
TSM的输入级别不完全符合SMBus规范。中小企业
规范规定输入低电压最大值为0.8V,最小高电压为
2.1V.对于TSM(参考数据表),规格不同。当5V(也适用于
>使用5V应用),TSM使用片上电压调节器(5V–至–3V±10%)。
在3V版本中,电源直接使用。然后,在5V(以及大于5V)时
TSM的内部电路在3V±10%的电压下工作,而在3V的电压下,电源规格
覆盖3V±20%。此电源的较高公差导致
输入电平。5V TSMs的最坏情况值为:车辆识别号,L=0.5…1.5V和车辆识别号,H=1.6…2.4V(大于
所有温度和电源电压),以及3V TSM的为0.5…1,5V和1.2…2.8V(idem)。
然而,这并不意味着5V的TSM可能有车辆识别号L=1.5V和车辆识别号H=1.6V
同时,TSM也不会同时具有车辆识别号L=1.5V和车辆识别号H=1.2V。两者
阈值随着电源电压的降低而降低。这两个阈值也是
受同一方向的温度影响。SDA和SCL都有滞后现象
抗噪声输入。
总之,保持总线上的逻辑电平Vlow<0.5V,Vhigh>2.8V肯定会
使用TSM覆盖所有操作案例,但不太可能是真正必要的。详细值
(由设计保证,而非试验限值)如下:
表6
SMBus与TSM的通信
德克斯特研究中心•美国密歇根州德克斯特市休伦河大道7300号,邮编48130•电话:+1(734)426-3921©_
8675版本NC SMBus App Note.doc 2010年7月35日第25页
图14输入电压水平与电源电压和温度
9号。应用程序信息
TSM温度计在SMBus配置中的应用
图15 TSM SMBus连接。
SMBus与TSM的通信
德克斯特研究中心•美国密歇根州德克斯特市休伦河大道7300号,邮编48130•电话:+1(734)426-3921©_
8675版本NC SMBus App Note.doc 2010年7月35日第26页
使用3.3V电源将TSM连接到SMBus。TSM具有二极管钳位SDA/SCL至
因此,有必要为TSM提供电源,以便不加载SMBus线路。
在SMBus配置中使用多个tsm
图16在SMBus网络中使用多个TSM设备。
TSM支持EEPROM中的7位从机地址,因此允许通过
两根普通电线。电流源上拉(如LTC1694)可能优先采用较高的
总线上的电容负载(C3和C4代表线路寄生),而简单的电阻上升
(R1和R2)提供明显的低成本优势。
高压电源操作
作为标准,模块MD-0003和MD-0005的工作电压为5伏。此外,
由于在引脚SCL/Vz上提供了集成的内部参考调节器,这些模块可以
很容易从高压电源(如VDD=8V…16V)供电。只有一些外部的
如下图所示的组件是实现这一点所必需的。
图17 12V调节器实施。
使用SCL/Vz引脚的第二个(合成齐纳二极管)功能,2线接口
只有在电压调节器过驱动(5 V调节电源被强制至Vdd)时,功能才可用
别针)。//SMBus控制信号
#定义_SCL_IO TRISCbits.TRISC3//Pin RC3方向控制位
#定义_SDA_IO TRISCbits.TRISC4//Pin RC4方向控制位
#define _SCLPORTCbits.RC3//为SLC线路分配pin RC3
#define _SDAPORTCbits.RC4//为SDA行分配pin RC4
#define mSDA_HIGH()_SDA_IO=1;//设置SDA行
#define mSDA_LOW()_SDA=0;_SDA_IO=0;//清除SDA行
#define mSCL_HIGH()_SCL=1;_SCL_IO=0;//设置SCL行
#define mSCL_LOW()_SCL=0;_SCL_IO=0;//清除SCL行
#定义ACK 0
#定义NACK 1
#定义SA 0x00/从地址
#define DEFAULT_SA 0x5A//默认从属地址
#define RAM_Access 0x00//RAM Access命令
#定义EEPROM访问0x20//EEPROM访问命令
#在eeprom中定义RAM-Tobj1 0x07//To1地址
//延迟常数
#定义DEL1SEC 100000
#定义DEL80ms 7400
#定义DEL200ms 18500
//高低电平时钟@Fosc=11.0592MHz,Tcy=362ns
#定义HIGHLEV 3
#定义LOWLEV 1
//延迟常数@Fosc=11.0592MHz,Tcy=362ns
#定义TBUF 2
/****************************************************************************
//SMBus上的启动条件
/****************************************************************************
//名称:起始位
//函数:在SMBus上生成启动条件
//参数:否
//Return:名称
//备注:请参阅“系统管理总线(SMBus)规范版本2.0”
/****************************************************************************
无效起始位(void)
{
mSDA_HIGH();//设置SDA行
Delay10TCYx(TBUF);//稍等几微秒
mSCL_HIGH();//设置SCL行
Delay10TCYx(TBUF);//生成站点之间的总线空闲时间
//和启动条件(Tbuf=4.7us min)
mSDA_LOW();//清除SDA行
Delay10TCYx(TBUF);/(重复)启动后保持时间
//条件。在此期间之后,生成第一个时钟。
/(Thd:sta=4.0us最小值)
mSCL_LOW();//清除SCL行
Delay10TCYx(TBUF);//稍等几微秒
}
SMBus与TSM的通信
德克斯特研究中心•美国密歇根州德克斯特市休伦河大道7300号,邮编48130•电话:+1(734)426-3921©_
8675版本NC SMBus App Note.doc第28页,共35页2010年7月
/*************************************************************************************
//SMBus上的停止条件
/*************************************************************************************
//名称:停止位
//函数:在SMBus上生成停止条件
//参数:否
//Return:名称
//备注:请参阅“系统管理总线(SMBus)规范版本2.0”
/****************************************************************************
无效停止位(void)
{
mSCL_LOW();//清除SCL行
Delay10TCYx(TBUF);//稍等几微秒
mSDA_LOW();//清除SDA行
Delay10TCYx(TBUF);//稍等几微秒
mSCL_HIGH();//设置SCL行
Delay10TCYx(TBUF);//停止条件设置时间(Tsu:sto=4.0us min)
mSDA_HIGH();//设置SDA行
}
/*************************************************************************************
//在SMBus上传输数据
/*************************************************************************************
//名称:发送字节
//Function:在SMBus上发送一个字节
//Parameters:unsigned char TX_buffer(将在SMBus上发送的字节)
//返回:无符号字符确认位(确认位)
//0-确认
//1-珍珠层
//注释:首先发送MSbit
/****************************************************************************
无符号字符发送字节(无符号字符发送缓冲区)
{
无符号字符位计数器;
无符号Ack_位字符;
无符号字符位;
for(位计数器=8;位计数器;位计数器---)
{
if(Tx_缓冲区和0x80)
bit_out=1;//如果Tx_buffer的当前位是1 set bit_out
其他的
bit_out=0;//否则清除bit_out
send_bit(bit_out);//在SDA上发送当前位
Tx_buffer<<<=1;//获取下一位进行检查
}
Ack_bit=Receive_bit();//获取确认位
返回Ack_位;
}//TX_byte()结束
/*************************************************************************************
------------------------------------------------------------------------------------------------------------------
无效发送位(无符号字符位)
{
if(bit_out==0)//检查位
mSDA_LOW();//bit_out=1时设置SDA
其他的
mSDA_HIGH();//如果bit_out=0,则清除SDA
不()//
No();//Tsu:dat=250ns最小值
不()//
mSCL_HIGH();//设置SCL行
Delay10TCYx(HIGHLEV);//时钟脉冲高电平
mSCL_LOW();//清除SCL行
Delay10TCYx(LOWLEV);//低电平时钟脉冲
//mSDA_HIGH();//Master release SDA行,
回报;
}//send_bit()结束
严重的噪音也可以从SCL(在最坏的情况下,也可以从
SDA)销。利用PWM输出可以解决这一问题。此外,脉宽调制输出可以通过附加
滤波(在较低的脉宽调制频率设置下)。随着简单的LPF RC网络的增加
ESD额定值是可能的。 |