IIC(集成电路总线)-STM32F1系列-AT24C02-简易实验开发详细流程(个人总结)
基于正点原子代码的个人改编,本篇(IIC实验)共3个章节。
注:本博客无盈利行为,真诚希望能帮助到大家!如有错误,还请指正!
IIC_STM32F1_AT24C02实验:AT24C02 模块(3)
第一步:编写基础的实现逻辑
(1)模块通信配置和写字节逻辑(本文中的代码均通过测试)
at24c02.h 文件
/*
* AT24C02 模块,总容量 2KB,总页数 32,8 字节/页,字地址长度 8 位。
* 基本的读写功能
* 程序员:贬道
*/
#ifndef AT24C02_H
#define AT24C02_H
#include "stm32f10x.h"
// 基础配置与实现逻辑
// 读写操作位:1 读;0 写
/************************************************************************************/
#define AT24C02 255 // AT24C02 共 256 个字节
void AT24C02_Init(void);
void AT24C02_WriteOneByte(u8 WriteAddr, u8 DataToWrite); // 指定地址写入一个字节
/************************************************************************************/
#endif
at24c02.c 文件
#include "at24c02.h"
#include "iic.h"
#include "delay.h"
/************************************************************************************/
void AT24C02_Init(void){
IIC_Idle();
}
// 写字节
/*
WriteAddr : 写入数据的目的地址
DataToWrite : 要写入的数据
*/
void AT24C02_WriteOneByte(u8 WriteAddr, u8 DataToWrite){
IIC_Start();
IIC_Send_Byte(0XA0); // 发送 AT24C02 器件地址 0XA0 和写操作
IIC_WaitAck(); // 低电平为应答
IIC_Send_Byte(WriteAddr%256); // 发送要写的数据的低地址,地址由低到高
IIC_WaitAck();
IIC_Send_Byte(DataToWrite); // 发送字节,传输数据
IIC_WaitAck();
IIC_Stop(); // 产生一个停止条件
Delay_ms(10); // 确保有足够的时间防止传输意外,最好不小于 5ms
}
/*********************************************************