IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32系列(HAL库)——F103C8T6通过IIC/I2C方式读写AT24C02—(EEPROM 存储模块) -> 正文阅读

[嵌入式]STM32系列(HAL库)——F103C8T6通过IIC/I2C方式读写AT24C02—(EEPROM 存储模块)

1.软件准备

(1)编程平台:Keil5

(2)CubeMX

(3)XCOM(串口调试助手)

2.硬件准备

(1)AT24C02模块

(2)F1的板子,本例使用经典F103C8T6

(3)ST-link?下载器

(4)USB-TTL模块

(5)杜邦线若干

3.模块资料

(1)模块简介:

????????AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个8字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。

(2)模块参数:

●宽范围的工作电压1.8V~5.5V
●2线串行接口,完全兼容I2C总线
●内部写周期(最大5 ms)
●可按字节写
●页写:8字节页(24C02)
●擦写寿命:100万次、数据保持时间:100年

更多详细信息参考:AT24CXX手册

4.CubeMX配置

(1)芯片选择

?(2)配置RCC、SYS、时钟树

配置RCC

配置SYS

配置时钟树

(3)配置串口1

?(4)配置IIC

?(5)设置路径、生成代码工程?

5、Keil5代码

(1)勾选Use?MicroLIB

(2) usart.c函数添加

/* USER CODE BEGIN 0 */
#include "stdio.h"
/* USER CODE END 0 */
 
 
 
/* USER CODE BEGIN 1 */
/*********************************************************
*
*重定义 fputc 函数
*
*********************************************************/
int fputc(int ch,FILE *f)
{
	HAL_UART_Transmit (&huart1 ,(uint8_t *)&ch,1,HAL_MAX_DELAY );
	return ch;
}
/* USER CODE END 1 */

(3)main函数

#include "stdio.h"
#define ADDR_24LCxx_Write 0xA0    //写24C02的时候,从器件地址为10100000(0xA0)
#define ADDR_24LCxx_Read 0xA1     //读24C02的时候,从器件地址为10100001(0xA1)
#define BufferSize 256      //缓存数组大小
#define Data_Size 8         //每次写入8个字节(64bit)
#define WriteRead_Num BufferSize/Data_Size //需要重复写入的次数   
uint8_t WriteBuffer[BufferSize],ReadBuffer[BufferSize];     //写缓存、读缓存
uint16_t i,num;

//--------------------------------------------------------------------

int main(void)
{
 
  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();
  MX_I2C1_Init();
  MX_USART1_UART_Init();
  
        for(uint16_t i=0; i<256; i++)
        WriteBuffer[i]=i;    //初始化写数组,写入0-255,共256个数据
	
		for (num=0; num<WriteRead_Num; num++)
        {
                          //参数分别为:IIC号、设备地址、从机寄存器地址、从机寄存器地址字节长度(8/16)、发送的数据的起始地址、传输数据的大小、操作超时时间 
                if(HAL_I2C_Mem_Write(&hi2c1, ADDR_24LCxx_Write, Data_Size*num, I2C_MEMADD_SIZE_8BIT,WriteBuffer+Data_Size*num,8, 1000) == HAL_OK)                                    
                    HAL_Delay(5);   //每次写入需要间隔至少5ms     
                else
                    break;          //写入失败跳出for循环                           
		}
        
		if(num==WriteRead_Num)  //数据如果全部写入,num会等于WriteRead_Num 
        {
            printf("---------------写入成功---------------\r\n");
                    //参数分别为:IIC号、读的地址、从机寄存器地址、从机寄存器地址字节长度(8/16)、数据缓存区、读出的字节数、操作超时时间 
            HAL_I2C_Mem_Read(&hi2c1, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,ReadBuffer,BufferSize, 1000);
            for(i=0; i<256; i++)
            printf("0x%02x  ",ReadBuffer[i]);   //十六进制串口打印
        }
        else 
            printf("---------------写入失败---------------\r\n");
		


  while (1)
  {
    
  }

}

6.接线、效果

STM32 -> PB6 ——? 模块SCL

STM32 -> PB7 ——? 模块SDA

本例程源码下载:点击跳转?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 12:02:29  更:2022-04-28 12:03:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:46:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码