16.3.9 多字节写子函数

多字节写子函数用于主器件发送多个字节的数据。首先发送起始位,接着是寻址字节,然后是数据的所要存入单元的首地址,外围器件此时产生正确的应答后,主器件便将开始多个字节的数据传输。多字节写子函数的流程图如图16.9所示,多字节写子函数示例如下。


void Writeic(unsigned char*Wdata,unsigned char RomAddress,unsigned char number)

{//写n个字节数据子程序

int nu;

Startic();//启动

Write8Bitic(WriteDeviceAddress);//写寻址地址

TestAckic();//应答检查

Write8Bitic(RomAddress);//写入I2C器件内部的数据存储首地址

TestAckic();//应答检查

for(nu=number;nu!=0;nu—)//循环,逐个字节发送

Write8Bitic(*Wdata);//单字节写

TestAckic();//应答检查

Wdata++;//指针增加,指向下一个数据

}

Stopic();//停止

}


该程序中,Wdata为待发送数据的首地址,RomAddress为I2C外围器件的数据写入首地址,number为写字节的个数。通过调用多次Write8Bitic子函数,分别用于发送寻址字节、I2C外围器件的内部写地址以及数据。另外,WriteDeviceAddress为写I2C外围器件的寻址字节,遵循寻址字节的格式,其声明示例如下。


define WriteDeviceAddress 0xB0


16.3.9 多字节写子函数 - 图1

图 16.9 多字节写子函数流程图