您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页STM8教程实验15-I2C总线+AT24C02

STM8教程实验15-I2C总线+AT24C02

来源:意榕旅游网
风驰电子STM8开发板 2011 例程十五 AT24C02基于I2C总线的读写

这个例程是讲解一下I2C,相信大家以前学51的的时候想驱动AT24C02的时候就是用到模拟I2C总线吧。在STM8S207RB中,是以硬件来实现I2C总线的,如果大家说哪一种方式来驱动AT24C02的话,我只能说是各有千秋。用IO模拟的I2C总线的话就简单点,但速度不够快,如果是用片内的硬件I2C的话,程序编写有点复杂,但速度快很多。下面我主要是介绍STM8S207RB的硬件I2C.

1 / 10

风驰电子STM8开发板 2011

大家可以参考STM8寄存器.pdf文档中的第246页至248页。 大家在看看我们风驰电子STM8开发板的硬件连接

下面我们从主函数看起

2 / 10

风驰电子STM8开发板 2011

其他的初始化就不多说了,现在前面的例程都说得很清楚了,先主要是说下与I2C相关的初始化和读写

I2C_DeInit() I2C的复位,其实设和没设都一样,因为单片机复位后它也跟着复位了。

I2C_EEInit() I2C的初始化 函数原型:

3 / 10

风驰电子STM8开发板

I2C_Init(I2C_Speed, I2C1_SLAVE_ADDRESS7, I2C_DUTYCYCLE_2,\\

I2C_ACK_CURR, I2C_ADDMODE_7BIT, Input_Clock)重点看下这个函数,这个就是I2C总线的初始化。设置I2C的速度为标准的速度 100K,从地址为0xA0,快速模式Fast mode Tlow/THigh = 2 ,当前数据位应答,7位从地址,时钟为系统时钟。

函数原型:void I2C_Init(u32 OutputClockFrequencyHz, u16 OwnAddress, I2C_DutyCycle_TypeDef DutyCycle, I2C_Ack_TypeDef Ack, I2C_AddMode_TypeDef AddMode, u8 InputClockFrequencyMHz )

代码太长了,看工程代码就可以了。

初始化弄好了,那怎样往从地址写一个字节呢?这个很重要 我们的选择模式是主设备方式读写

4 / 10

风驰电子STM8开发板 2011 这个函数主要是根据I2C的时序来操作的,下面介绍一下I2C的时序

5 / 10

风驰电子STM8开发板 2011 来源于STM8寄存器.pdf中第251页

6 / 10

风驰电子STM8开发板 2011

这个函数是往AT24C02写一页数据,每页最多能写8Byte。

7 / 10

风驰电子STM8开发板 2011 8 / 10

风驰电子STM8开发板 2011 这个函数是从AT24C02任何地址读多个字节的(可以超过8个字节)回来放在内存pBuffer中。

参考STM8寄存器.pdf文档第252页。

9 / 10

风驰电子STM8开发板 2011

实验效果:

风驰电子祝您学习愉快~~~!!!!!

10 / 10

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务