微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > stm8s开发(八) IIC的使用:IIC主机通信!

stm8s开发(八) IIC的使用:IIC主机通信!

时间:09-19 来源:互联网 点击:

temp = I2C_SR3;

while((I2C_SR1 & 0x80) == 0); //等待发送寄存器为空

I2C_DR = Address; // 发送要读取的寄存器地址

while((I2C_SR1 & 0x04) == 0); //等待数据发送完成

IIC_Start();

while((I2C_SR1 & 0x01) == 0); //EV5,起始信号已经发送

I2C_DR = (DeviceAddress | 0x01); // 发送iic从器件物理地址,最低位1,读操作

while((I2C_SR1 & 0x02) == 0); //地址已经被发送

temp = I2C_SR1; //清除ADDR标志位

temp = I2C_SR3;

while((I2C_SR1 & 0x40) == 0); //等待接收数据寄存器非空

read_data = I2C_DR;

I2C_CR2 &= 0xfb; //读取数据下,发送stop必须禁止ack,才能释放从机

temp = I2C_SR1; //清零BTF标志位

temp = I2C_DR;

IIC_Stop();

return read_data;

}

附上stm8s在IAR环境下的项目工程,包括了SPI、IIC、PWM、AWU、USART、EEPROM等片上硬件的初始化代码。

http://download.csdn.NET/detail/devintt/9454188

读操作:开始 -> 发送外设地址 -> 开始 ->发送需要读取的寄存器地址 -> 读一个字节 -> (可能再读一个字节) ->。。。 -> 结束

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top