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.9 多字节写子函数流程图