您的位置:首页 > 编程语言

9.I2C读写数据—基于CT117E开发板的STM32库函数编程

2017-01-26 10:50 316 查看
I2C  简介IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。 它是由数据线 SDA 和时钟 SCL 构成的串行总线, 可发送和接收数据。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。应答信号: 接收数据的 IC 在接收到 8bit 数据后, 向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要.( IIC 总线时序图)参考CT117E开发板原理图  I2C具体的设置参考其驱动程序,这里分析其在主函数中的用法。1.读数据
uint8_t x24c02_read(uint8_t address)
{
unsigned char val;
I2CStart(); 
I2CSendByte(0xa0);
I2CWaitAck(); 
I2CSendByte(address);
I2CWaitAck(); 
I2CStart();
I2CSendByte(0xa1); 
I2CWaitAck();
val = I2CReceiveByte(); 
I2CWaitAck();
I2CStop();
return(val);
}
2.写数据
void x24c02_write(unsigned char address,unsigned char info)
{
I2CStart(); 
I2CSendByte(0xa0); 
I2CWaitAck(); 
I2CSendByte(address);
I2CWaitAck(); 
I2CSendByte(info); 
I2CWaitAck(); 
I2CStop();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stm32 库函数 C语言