9.I2C读写数据—基于CT117E开发板的STM32库函数编程
来源:互联网 发布:js判断质数的算法 编辑:程序博客网 时间:2024/05/20 03:08
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();
}
0 0
- 9.I2C读写数据—基于CT117E开发板的STM32库函数编程
- 8.内部温度传感器的使用—基于CT117E开发板的STM32库函数编程
- 1.点亮LED—基于CT117E开发板的STM32库函数编程
- 3.串口操作—基于CT117E开发板的STM32库函数编程
- 2.系统延时函数—基于CT117E开发板的STM32库函数编程
- 4. NVIC中断向量配置—基于CT117E开发板的STM32库函数编程
- 6.外部中断—基于CT117E开发板的STM32库函数编程
- 7.AD转换—基于CT117E开发板的STM32库函数编程
- 10.RTC内部时钟—基于CT117E开发板的STM32库函数编程
- 11.通用定时器—基于CT117E开发板的STM32库函数编程
- 12.PWM—基于CT117E开发板的STM32库函数编程
- 13.输入捕获—基于CT117E开发板的STM32库函数编程
- 14.知识点总结归纳—基于CT117E开发板的STM32库函数编程
- 5.LCD驱动调用方法以及按键函数编写—基于CT117E开发板的STM32库函数编程
- 基于stm32的热释传感器模块(库函数编程)
- 基于 STM32 的硬件 I2C 读取 MPU6050 数据
- stm32 Flash读写[库函数]
- stm32 Flash读写[库函数]
- C++基础语法
- Matlab 版本对照
- gdufe acm 1136 查找ACM(加强版)
- OpenMesh速记
- Java StringBuffer 和 StringBuilder 类
- 9.I2C读写数据—基于CT117E开发板的STM32库函数编程
- baidu-163
- shell中$(( )) 与 $( ) 还有${ }的区别
- 股票入门基础知识44:了解哪种时间框架最适合交易
- 蓝桥杯之Playfair密码变种加密
- OPENCV(1)_平台搭建
- maven(13)------maven使用私服的settings.xml配置
- 矩形面积交:输出0.00
- 第一篇记录代码blog在过年前最后一个工作日上传——获取历史天气数据