I2C总线时序详解
I2C总线信号时序总结

I2C总线信号时序总结I2C(Inter-Integrated Circuit)总线是一种串行通信协议,它用于在集成电路之间进行短距离的数据交换。
I2C总线信号时序对于正确实现I2C通信非常重要。
本文将详细总结I2C总线信号时序,包括起始条件、数据传输、停止条件等。
1.总线状态2.起始条件起始条件是指从I2C主设备(Master)向I2C从设备(Slave)发送数据之前的一系列信号。
起始条件由两个信号组成:SCL(时钟)和SDA(数据)。
当SCL为高电平时,SDA发生一个下降沿,表示开始传输数据。
3.数据传输在数据传输阶段,数据位通过SCL时钟控制的边缘传输。
这个过程类似于同步串行通信协议。
数据的传输在I2C总线上是以字节为单位进行的,每个字节有8位(bit)。
数据传输过程中,SCL和SDA的状态发生变化的规则如下:-当SCL为低电平时,数据线SDA可以发生变化。
此时SDA数据线的电平变化将被忽略。
-当SCL为高电平时,SDA数据线的电平变化将被读取或写入。
4.读取数据在I2C总线上进行数据读取时,接收设备通常在时钟的上升沿读取数据。
主设备将在SCL为高电平时将数据传输到SDA数据线上。
而从设备将在SCL下降沿读取数据。
5.写入数据在I2C总线上进行数据写入时,发送设备通常在时钟的下降沿写入数据。
主设备在SCL为高电平时,将数据传输到SDA数据线上。
从设备将在SCL下降沿写入数据。
6.停止条件停止条件是指在I2C通信完成后,由主设备发送的一系列信号。
停止条件由两个信号组成:SCL(时钟)和SDA(数据)。
当SCL为高电平时,SDA发生一个上升沿,表示结束传输。
对于I2C总线信号时序的更详细说明可以如下:-在起始条件中,SCL先于SDA变为高电平。
SDA变化的任何时间必须在SCL变高之前完成。
起始条件的结束是在SCL为高电平时,SDA发生一个下降沿。
-在数据传输阶段,数据的传输是由主设备控制的,每个字节8位。
I2C总线时序详解

I2C总线时序详解由于连接到I2C 总线的器件有不同种类的工艺(CMOS、NMOS、双极性),逻辑0(低)和逻辑1(高)的电平不是固定的,它由电源VCC的相关电平决定,每传输一个数据位就产生一个时钟脉冲。
数据的有效性SDA 线上的数据必须在时钟的高电平周期保持稳定。
数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。
I2C位传输数据有效性起始和停止条件SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件;SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。
起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态起始和停止条件,在停止条件的某段时间后总线被认为再次处于空闲状态。
如果产生重复起始条件而不产生停止条件,总线会一直处于忙的状态,字节格式发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。
每个字节后必须跟一个响应位。
首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。
应答响应数据传输必须带响应,相关的响应时钟脉冲由主机产生。
在响应的时钟脉冲期间发送器释放SDA 线(高)。
在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。
通常被寻址的接收器在接收到的每个字节后,除了用CBUS 地址开头的数。
I2C总线数据传输和应答据,必须产生一个响应。
当从机不能响应从机地址时(例如它正在执行一些实时函数不能接收或发送),从机必须使数据线保持高电平,主机然后产生一个停止条件终止传输或者产生重复起始条件开始新的传输。
如果从机接收器响应了从机地址,但是在传输了一段时间后不能接收更多数据字节,主机必须再一次终止传输。
i2c 时序状态

i2c 时序状态
I2C总线是一种串行数据总线,用于连接微控制器(MCU)和外部设备。
它的时序状态包括:
- 启动信号:SCL为高电平的时候,SDA由高电平向低电平跳变。
- 结束信号:SCL为高电平的时候,SDA由低电平向高电平跳变。
- 数据传送时序:由于一个I2C总线上可以挂多个设备,因此开始信号后,要先发送7bit的从设备地址;第8个bit表示读或者写,该信号由主机发送;然后从机会发送ACK 的应答信号;之后才是要发送的数据,数据发送完,从机再发送ACK信号。
- 空闲状态:由I2C的启动条件可知,I2C总线在空闲时需要总线的SDA和SCL两条信号线同时处于高电平。
- 总线仲裁:I2C总线上可能挂接有多个器件,有时会发生两个或多个主器件同时想占用总线的情况,这种情况叫做总线竞争。
在使用I2C总线时,必须严格遵循其时序要求,以确保数据传输的可靠性和准确性。
如需了解更多关于I2C总线的信息,可以补充相关背景后再次向我提问。
i2c repeat strat 时序

i2c repeat strat 时序I2C(Inter-Integrated Circuit)是一种用于连接微控制器和各种外围设备的双向二线制同步串行总线。
它简单、可靠且广泛用于各种电子设备中。
在I2C通信中,有时需要重复启动(Repeat Start)操作,这允许在不释放总线的情况下连续进行多次数据传输。
I2C Repeat Start时序详解总线空闲状态:在I2C总线中,当SDA(数据线)为高且SCL(时钟线)为高时,总线被认为处于空闲状态。
开始条件:当SDA从高电平变为低电平时,同时SCL保持高电平,这表示一个开始条件。
此时,所有连接到总线的设备都会检测到这个信号,并准备进行通信。
设备寻址:接下来的8位数据传输表示要通信的设备地址。
如果设备地址与某个设备匹配,该设备会被选中。
数据传输:在设备寻址之后,可以传输数据。
数据可以是字节格式,由8位数据位和1位应答位(ACK/NACK)组成。
结束条件:当SDA从低电平变为高电平时,同时SCL保持高电平,这表示一个结束条件。
Repeat Start时序在I2C通信中,如果需要连续向同一个设备或多个设备发送数据,可以使用Repeat Start条件,而不是释放总线并重新发起开始条件。
第一个数据传输:首先,按照标准的I2C开始条件进行设备寻址和数据传输。
Repeat Start:在完成第一个数据传输后,不发送结束条件,而是直接改变SDA的状态,从高电平变为低电平(此时SCL仍为高电平),形成Repeat Start条件。
再次寻址和数据传输:在Repeat Start之后,可以立即进行设备寻址和新的数据传输,而无需释放总线。
注意事项Repeat Start条件只能用在主设备(Master)向从设备(Slave)发送数据时。
并不是所有的I2C设备都支持Repeat Start条件,所以在使用时需要确保目标设备支持这一功能。
在某些情况下,使用Repeat Start条件可能会提高通信效率,特别是在需要连续向多个设备发送数据时。
i2c操作时序

i2c操作时序I2C(Inter-Integrated Circuit)是一种串行通信协议,广泛应用于各种电子设备之间的数据传输。
它由飞利浦公司(现在的NXP半导体)在1982年推出,并且成为了一种广泛采用的标准。
I2C操作时序是指在I2C总线上进行数据传输时,相关信号的时序顺序。
I2C总线上有两种设备:主设备和从设备。
主设备负责发起传输和提供时钟信号,而从设备则被动接收传输和依赖于主设备提供的时钟。
I2C总线上的所有设备共享一个共同的时钟信号(SCL线)和数据信号(SDA线)。
在I2C操作时序中,包括了以下几个步骤:1.起始条件(Start condition):主设备发送一个低电平脉冲到SDA线,而SCL线保持高电平。
这表示一个新的传输周期的开始。
2.地址和寻址(Address and addressing):主设备发送一个地址字节来选择要与之通信的从设备。
地址字节由从设备的7位地址和一个读/写位组成。
读写位为0表示主设备要写入数据,为1表示主设备要读取数据。
3. ACK(Acknowledge):接收到地址字节的从设备会返回一个应答位ACK。
主设备在发送地址或数据字节后会拉低SDA线,而从设备在SCL线上的一个时钟周期后将SDA线恢复为高电平。
如果从设备正常接收到了字节,它会将SDA线拉低表示应答。
如果从设备没有正确接收到字节,它会保持SDA线为高电平。
4.数据传输(Data transmission):主设备根据需要发送或接收数据字节。
发送时,主设备在一个时钟周期内将数据字节写入SDA线,并且引脚保持稳定直到SCL线拉高。
发送完数据字节后,主设备释放SDA线以允许从设备进行检测和准备。
接收时,主设备将SDA线释放并等待从设备发送数据位。
从设备在每个时钟周期内向SDA线写入数据字节,并且在SCL线拉高之后主设备读取该字节。
5.停止条件(Stop condition):主设备发送一个高电平脉冲到SDA线,而SCL线保持高电平。
I2C通信时序图解析

I2C通信时序图解析⼀、I2C协议简介 I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被⼴泛地使⽤在系统内多个集成电路(IC)间的通讯。
关于I2C协议的更多内容,可阅读《I2C总线协议》,本博⽂主要分析I2C波形图,对于I2C的基础知识不在做介绍。
⼆、I2C协议标准代码2.1 起始信号&停⽌信号 起始信号:当 SCL 线是⾼电平时 SDA 线从⾼电平向低电平切换。
停⽌信号:当 SCL 线是⾼电平时 SDA 线由低电平向⾼电平切换。
2.1.1 起始信号代码void I2C_Start(void){I2C_SDA_High(); //SDA=1I2C_SCL_High(); //SCL=1I2C_Delay();I2C_SDA_Low();I2C_Delay();I2C_SCL_Low();I2C_Delay();}2.1.2 停⽌信号代码void I2C_Stop(void){I2C_SDA_Low();I2C_SCL_High();I2C_Delay();I2C_SDA_High();I2C_Delay();}2.2 发送⼀个字节 CPU向I2C总线设备发送⼀个字节(8bit)数据u8 I2C_SendByte(uint8_t Byte){uint8_t i;/* 先发送⾼位字节 */for(i = 0 ; i < 8 ; i++){if(Byte & 0x80){I2C_SDA_High();}else{I2C_SDA_Low();}I2C_Delay();I2C_SCL_High();I2C_Delay();I2C_SCL_Low();I2C_Delay();if(i == 7){I2C_SDA_High(); /* 释放SDA总线 */}Byte <<= 1; /* 左移⼀位 */I2C_Delay();}} 2.3 读取⼀个字节 CPU从I2C总线设备上读取⼀个字节(8bit数据)u8 I2C_ReadByte(void){uint8_t i;uint8_t value;/* 先读取最⾼位即bit7 */value = 0;for(i = 0 ; i < 8 ; i++){value <<= 1;I2C_SCL_High();I2C_Delay();if(I2C_SDA_READ()){value++;}I2C_SCL_Low();I2C_Delay();}return value;}2.4 应答2.4.1 CPU产⽣⼀个ACK信号void I2C_Ack(void){I2C_SDA_Low();I2C_Delay();I2C_SCL_High();I2C_Delay();I2C_SCL_Low();I2C_Delay();I2C_SDA_High();}2.4.2 CPU产⽣⼀个⾮ACK信号void I2C_NoAck(void){I2C_SDA_High();I2C_Delay();I2C_SCL_High();I2C_Delay();I2C_SCL_Low();I2C_Delay();}2.4.3 CPU产⽣⼀个时钟,并读取器件的ACK应答信号uint8_t I2C_WaitToAck(void){uint8_t redata;I2C_SDA_High();I2C_Delay();I2C_SCL_High();I2C_Delay();if(I2C_SDA_READ()){redata = 1;}else{redata = 0;}I2C_SCL_Low();I2C_Delay();return redata;}三、I2C通信时序图解析 有了上边的I2C总线标准代码的基础,下⾯我们进⼊本博⽂所要讲解的内容,怎么分析I2C的时序图,以O2Micro的OZ9350为例,OZ9350是⼀款模拟前端(AFE)的IC器件。
对I2C总线时序的一点理解以及ACK和NACK(NAK)

关键字:i2c ,IIC,bus,ACK,NACK,NAK,SDA,SCL,timing,master,slaver,时序,响应,总线关于i2c的响应问题:对于每一个接收设备(从设备,slaver),当它被寻址后,都要求在接收到每一个字节后产生一个响应。
因此,the master device 必须产生一个额外的时钟脉冲(第九个脉冲)用以和这个响应位相关联。
在这个脉冲期间,发出响应的从设备必须将SDA拉低并在时钟脉冲的高电平期间保持住。
这表示该设备给出了一个ACK。
如果它不拉低SDA线,就表示不响应(NACK)。
另外,在从机(发送方)发送完最后一个字节后主设备(接收方)必须产生一个不响应位,用以通知从机(发送方)不要再发送信息了,这样从机就知道该将SDA释放了,而后,主机发出一个停止位给slaver。
总结下,i2c通讯中,SDA 和SCL 都是有主机控制的,从设备只是能够将SDA 线拉低而已。
对于SCL线,从机是没有任何能力去控制的。
从机只能被动跟随SCL再说的清楚些:主机发送数据到从机的状态下:主机控制SCL信号线和SDA信号线,从机只是在SCL线为高的时候去被动读取SDA线。
主机读取从机的数据:主机来发出时钟信号,从机只是保证在时钟信号为高电平的时候的SDA的状态而已。
//----------------------------------------补充@201108311142SDA和SCL已经通过上拉电阻被上拉,master可以控制(拉低或者释放)这两条线,而slaver只能控制SDA线。
当master发送数据时,master会适时地将SDA和SCL拉低或释放(拉高)。
确切的时序应该是这样的:当master要发送一个start时,master会将SDA拉低,这就可以了,因为此时的SCL一定是High。
好了,一个start就这样发出去了。
而slaver也会发现这个start信号的发生,slaver便会准备好接收接下来的数据了。
iic标准时序

iic标准时序
IIC(Inter-Integrated Circuit)是一种双线串行总线,也被称为I2C(发音为"I-squared C")。
它是由Philips公司开发的一种简单、双向、二线制同步串行总线。
IIC标准时序包括起始信号、数据传输、停止信号等步骤。
以下是IIC标准时序的基本步骤:
1.起始信号:当SCL线为高电平,SDA线由高电平跳变为低电平时,表示开始传输数据。
2.数据传输:在起始信号后,可以进行数据传输。
数据传输遵循以下规则:
在SCL线为高电平时,SDA线上的数据必须在稳定的电平状态,并且在SCL 线为低电平时,数据允许改变。
SDA线的数据在时钟信号SCL为高电平时保持稳定,在SCL为低电平时,数据可以改变。
3.停止信号:当SCL线为高电平,SDA线由低电平跳变为高电平时,表示停止传输数据。
4.应答信号:如果接收数据的设备能够正确接收数据,它将在SCL线的高电平期间将SDA线拉低,表示应答。
如果设备不能接收数据或发生错误,它不会拉低SDA线,表示非应答。
5.时钟同步:在数据传输过程中,主设备会生成时钟信号SCL,并用于同步数据传输。
从设备根据主设备的时钟信号来响应。
6.数据长度:一个IIC数据包中可以有1字节的数据,也可以有多个字节的数据。
多字节的数据必须以最高有效字节(MSB)在前的方式进行传输。
注意,上述是基本时序和规则,具体应用可能有所不同。
根据实际设备和具体需求,可能需要进一步了解和应用相关的具体参数和设置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
I2C
总线时序详解
I2C总线位传输
由于连接到I2C总线的器件有不同种类的工艺(CMOSNMOS双极性),逻辑0 (低)和逻辑1 (高)的电平不是固定的,它由电源VCC的相关电平决定,每传输一个数据位就产生一个时钟脉冲。
数据的有效性
SDA线上的数据必须在时钟的高电平周期保持稳定。
数据线的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变。
I2C位传输数据有效性
起始和停止条件
SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示起始条件;
SCL线是高电平时,SDA线由低电平向高电平切换,这个情况表示停止条件。
起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态
SDA
起始和停止条件
,在停止条件的某段时间后总线被认为再次处于空闲状态。
如果产生重复起始条件而不产生停止条件,总线会一直处于忙的状态,此时的起始条件(S)和重复起始条件(Sr)在功能上是一样的。
I2C总线数据传输
字节格式
发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制。
每个字节后必须跟一个响应位。
首先传输的是数据的最高位
(MSB,如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL保持低电平,
迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL后数据传输继续。
应答响应
数据传输必须带响应,相关的响应时钟脉冲由主机产生。
在响应的时钟脉冲期间发送器释放SDA线(高)。
在响应的时钟脉冲期间,接收器必须将SDA线拉低,使它在这个时钟
脉冲的高电平期间保持稳定的低电平。
通常被寻址的接收器在接收到的每个字节后,除了用CBUS地址开头的
数。
I2C
总线数据传输和应答
据,必须产生一个响应。
当从机不能响应从机地址时(例如它正在执行一 些实时函数不能接收或发送),从机必须使数据线保持高电平,主机然后 产生一个停止条件终止传输或者产生重复起始条件开始新的传输。
如果从机接收器响应了从机地址,但是在传输了一段时间后不能接收 更多数据字节,主机必须再一次终止传输。
这个情况用从机在第一个字节 后没有产生响应来表示。
从机使数据线保持高电平,主机产生一个停止或 重复起始条件。
如果传输中有主机接收器,它必须通过在从机不产生时钟的最后 一个字节不产生一个
响应,向从机发送器通知数据结束。
从机发送器必须 释放数据线,允许主机产生一个停止或重复起始条件。
寻址方式
7位寻址
第一个字节的头 7位组成了从机地址,最低位( LSB )是第8位,它
决定了传输的
方向。
第一个字节的最低位是“ 0”,表示主机会 写信息到被选中的从机;
“ 1”表示主机会向从机 读信息,当发送了一个地址后,系统中的每个器件 都在起始条件后将头 7位与它自己的地址比较,如果一样,器件会判定它 被主机寻址,至于是从机接收器还是从机发送器,都由
R/W 位决定。
10位寻址
10位寻址和7位寻址兼容,而且可以结合使用。
10位寻址采用了保留的 1111XXX 作为起始条件(S ),或重复起始条 件(Sr )的后第一个字节
的头
7位。
10位寻址不会影响已有的
7位寻址,有7位和10位地址的器件可以
i/1-
MSB
Ack nowledgenw nl
A ok nowledgc men! 1 1 I I J J
Signal From Aeceiver
Signal From Receiver 1 1
1 1 I |\/ \/ V
z\/\/\
1 1
START 1
?
7
8 9
1 2
8 9 _ —d
STOP Conditton (S)
R/W ACK
AU 瓦 Condition (P)
SDA
SCL
连接
I2C总线10位地址格式
到相同的I2C总线。
它们都能用于标准模式(F/S )和高速模式(Hs)系统。
保留地址位1111XXX 有8个组合,但是只有4个组合11110XX用于
10位寻址,剩下的4个组合11111XX保留给后续增强的I2C总线。
10位从机地址是由在起始条件(S)或重复起始条件(Sr )后的头
两个字节组成。
第一个字节的头7位是11110XX的组合,其中最后两位(XX)是10位地址的两个最高位(MSB。
第一个字节的第8位是R/W位,决定了传输的方向,第一个字节的最低位是“0”表示主机将写信息到选中的从机,“ 1 ”表示主机将向从机读
信息。
如果R/W位是“ 0 ”,则第二个字节是10位从机地址剩下的8位;
如果R/W位是“1”则下一个字节是从机发送给主机的数据。
快速模式
快速模式器件可以在400kbit/s 下接收和发送。
最小要求是:它们可
以和400kbit/s 传输同步,可以延长SCL信号的低电平周期来减慢传输。
快速模式器件都向下兼容,可以和标准模式器件在0~100kbit/s 的I2C总
线系统通讯。
但是,由于标准模式器件不向上兼容,所以不能在快速模式I2C总线系统中工作。
快速模式I2C总线规范与标准模式相比有以下额外
的特征:
1、最大位速率增加到400kbit/s ;
2、调整了串行数据(SDA 和串行时钟(SCL )信号的时序;
3、快速模式器件的输入有抑制毛刺的功能,SDA和SCL输入有施密特触发器;
4、快速模式器件的输出缓冲器对SDA和SCL信号的下降沿有斜率控制功能;
5、如果快速模式器件的电源电压被关断,SDA和SCL的I/O 管脚必须悬空,不能阻塞总线;
6、连接到总线的外部上拉器件必须调整以适应快速模式I2C总线更短
的最大允许上升时间。
对于负载最大是200pF的总线,每条总线的上拉器
件可以是一个电阻,对于负载在200pF~400pF之间的总线,上拉器件可以
是一个电流源(最大值3mA )或者是一个开关电阻电路。
高速模式
高速模式(Hs模式)器件对I2C总线的传输速度有具大的突破。
Hs模
式器件可以在高达 3.4Mbit/s 的位速率下传输信息,而且保持完全向下兼容快速模式或标准模式(F/S模式)器件,它们可以在一个速度混合的总线系统中双向通讯。
Hs模式传输除了不执行仲裁和时钟同步外,与F/S模式系统有相同的
串行总线协议和数据格式。
高速模式下I2C总线规范如下:
1、Hs模式主机器件有一个SDAH信号的开漏输出缓冲器和一个在SCLH
输出的开漏极下拉和电流源上拉电路。
这个电流源电路缩短了SCLH信号的
上升时间,任何时侯在Hs模式,只有一个主机的电流源有效;
2、在多主机系统的Hs模式中,不执行仲裁和时钟同步,以加速位处
理能力。
仲裁过程一般在前面用F/S模式传输主机码后结束;
3、Hs模式主机器件以高电平和低电平是1:2的比率产生一个串行时钟信号。
解除了建立和保持时间的时序要求;
4、可以选择Hs模式器件有内建的电桥。
在Hs模式传输中,Hs模式
器件的高速数据(SDAH和高速串行时钟(SCLH )线通过这个电桥与F/S模式器件的SDA和SCL线分隔开来。
减轻了SDAH和SCLH线的电容负载,
使上升和下降时间更快;
5、Hs模式从机器件与F/S从机器件的唯一差别是它们工作的速度。
Hs模式从机在SCLH和SDAH俞出有开漏输出的缓冲器。
SCLH管脚可选的下拉晶体管可以用于拉长SCLH信号的低电平,但只允许在Hs模式传输的响应位后进行;
6、Hs模式器件的输出可以抑制毛刺,而且SDAH和SCLH输出有一个施密特触发器;
7、Hs模式器件的输出缓冲器对SDAH和SCLH信号的下降沿有斜
率控制功能[1]
**函数名:读一个字节数据
**入口参数:无
**注意:
**说明:
***********************************************************/
uchar l2cReadByte( void )
{
uchar rbyte = 0;
uchar i = 0;
for(i = 0; i < 8; i++ )
{
rbyte = rbyte << 1; //非常注意...此语句不放在循环体内最后.
SDA = 1; //SDA 为输入
SCL = 1;
NOP_5;
if( SDA == 1 )
rbyte = rbyte | 0x01;
SCL = 0;
}
return rbyte;
}
2从地址读数据
第249行为什么还要加一个I2Cstart()?
3为什么循环变量定义为uchar类型?
4写字节子程序
void l2c_Write_n( uchar DeviceAddress, uchar ByteAddress, uchar *Wdata, uchar n) 第273行,为什么不和读子程序(第250行)一样,将最后一位变成零呢?
5程序454行——456行,十位之后就加小数点,好像不对!!
6 uchar l2cReadDataFromAddr( uchar DeviceAddress, uint ByteAddress )
程序第。