- 4
- 0
- 约7.37千字
- 约 7页
- 2018-05-18 发布于河南
- 举报
stm32 之 IIC应用
stm32 之 IIC应用
iic协议是比较简单的双线协议,时钟线CLK和数据线SDA。
一般我们常见的还有spi总线,这种总线可以可以根据需要扩展,还有单总线等等
这次还以at240c2为例进行操作!
PS:这就是传说中的iic时序图
硬件构造我们不过多的分析,今天用到库了!我们先从库函数硬件iic初始化说起!
PB6 ? -- ? CLK
PB7 ? -- ? SDA
[cpp] view plaincopyprint?
void?i2c_init(u8?addr,u32?clock)??
{??
????I2C_InitTypeDef?i2c;??
????RCC-APB2ENR?|=?13;??
????GPIOB-CRL?|=?(u32)0xff(6*4);??
??????
????RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);??
????i2c.I2C_Ack?=?I2C_Ack_Enable;??
????i2c.I2C_AcknowledgedAddress?=?I2C_AcknowledgedAddress_7bit;??
????i2c.I2C_ClockSpeed?=?clock*1000;??
????i2c.I2C_DutyCycle?=?I2C_DutyCycle_2;??
????i2c.I2C_Mode?=?I2C_Mode_I2C;??
????i2c.I2C_OwnAddress1?=?addr;??
??
????I2C_Cmd(I2C1,ENABLE);??
????I2C_Init(I2C1,i2c);??
}??
void i2c_init(u8 addr,u32 clock)
{
I2C_InitTypeDef i2c;
RCC-APB2ENR |= 13;
GPIOB-CRL |= (u32)0xff(6*4);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
i2c.I2C_Ack = I2C_Ack_Enable;
i2c.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
i2c.I2C_ClockSpeed = clock*1000;
i2c.I2C_DutyCycle = I2C_DutyCycle_2;
i2c.I2C_Mode = I2C_Mode_I2C;
i2c.I2C_OwnAddress1 = addr;
I2C_Cmd(I2C1,ENABLE);
I2C_Init(I2C1,i2c);
}
在配置管脚方面,我还是喜欢用寄存器配置,因为我的两行代码可以解决库函数的N多行代码的问题!
还有在结构体变量命名方面也是属于我自己的独创吧,这样反正我觉得是既容易识别,也少打几个字!
typedef struct{? uint32_t I2C_ClockSpeed; //I2C时钟频率设置? uint16_t I2C_Mode; ? ? ? ? ? ? //I2C模式设置? uint16_t I2C_DutyCycle; ? ? //高低电平时间之比? uint16_t I2C_OwnAddress1; ? ? ?//主设备地址设置,也就是自己的地址? uint16_t I2C_Ack; ? ? ? ? ? ? ? ? //Check? uint16_t I2C_AcknowledgedAddress; //地址长度,可以为7bit的也可以为10bit的}I2C_InitTypeDef;
IIC初始化完之后,我们开始来研究eeprom
看完这个写一个字节的协议之后,我们应该对这个写已经没有什么问题了,很简单的。
这个是写一个page
注:在eeprom里面写数据时,一次最多只能写一个page,一个page为8byte,同时这个也有字节对齐的要求!
比如我们从Address = 4开始写,那么我们最多一次性可写4个byte,如果我们从8开始写的话,我们就可以8个byte,最后偏移到15。
[cpp] view plaincopyprint?
void?eeprom_write_byte(u8?wt_addr,u8?data)??
{??
??
????I2C_GenerateSTART(I2C1,ENABLE);delay(5);??
????I2C_Send7bitAddress(I2C1,EEPROM_ADDR,I2C_Direction_Transmitter);??
????while(!I2C_CheckEvent(I2C1,?I2C_EVE
您可能关注的文档
最近下载
- 思维训练与学习力提升-07显性工具化中批判性工具a.pdf VIP
- 思维训练与学习力提升-08显性工具化下创造性思考工具.pdf VIP
- 思维训练与学习力提升-06显性工具化上核心工具.pdf VIP
- 通识教育类课程标准-写作与沟通课程标准-写作与沟通教学教案28.pdf VIP
- GB∕T30146-2023 《安全与韧性 业务连续性管理体系 要求》“8.3业务连续性策略和解决方案”理解与实施指导材料(2024A0).docx VIP
- 城市轨道交通重载型自动扶梯和自动人行道技术规范.PDF VIP
- 楼施工组织设计及投标报价文件编制工程管理(论文)开题报告_大学论文.doc VIP
- 《海东市无人快递车试点应用工作方案》.docx VIP
- 湖南湘中园施工组织设计与投标报价文件编制.doc VIP
- 曼娜回忆录全文小说.pptx VIP
原创力文档

文档评论(0)