蓝桥杯嵌入式(G431)备赛笔记——I2C

目录

板子资源&&I2C移植:

EEPROM:

EEPROM写入 :

EEPROM读取: 

MCP4017(可编程电阻):


板子资源&&I2C移植:

官方提供的i2c_hal文件中包含了配置引脚的函数,这里不需要配置CubeMx,注意官方文件没有使用stm32的IIC资源,通过gpio高低电平的时间模拟时序的信号,需要手写部分驱动代码,移动库函数并添加至工程

EEPROM:

EEPROM介绍:https://blog.csdn.net/weixin_4203129https://blog.csdn.net/weixin_42031299/article/details/1211723439/article/details/121172343

EEPROM写入 :

void EEP_write(u8 add, u8 dat)
{
    // 启动I2C通信,准备进行数据写入操作
    I2CStart();
    // 向EEPROM发送写入地址0xA0,表示开始写入操作
    I2CSendByte(0xa0);
    // 等待从设备的应答信号,确保通信正常
    I2CWaitAck();
    // 向EEPROM发送要写入的地址
    I2CSendByte(add);
    // 等待从设备的应答信号
    I2CWaitAck();
    // 向EEPROM发送要写入的数据
    I2CSendByte(dat);
    // 等待从设备的应答信号
    I2CWaitAck();
    // 停止I2C通信
    I2CStop();
    // 延时5毫秒,确保数据写入完成
    HAL_Delay(5);
}

EEPROM读取: 

uint8_t EEP_read(u8 add)
{
    // 声明一个变量dat,用于存储读取到的数据
    u8 dat = 0;

    // 启动I2C通信,准备进行数据读取操作
    I2CStart();
    // 向EEPROM发送写入地址0xA0,表示开始写入操作
    I2CSendByte(0xa0);
    // 等待从设备的应答信号,确保通信正常
    I2CWaitAck();
    // 向EEPROM发送要读取的地址
    I2CSendByte(add);
    // 等待从设备的应答信号
    I2CWaitAck();
    
    // 发送重复启动信号,准备切换到读取模式
    I2CStart();
    // 向EEPROM发送读取地址0xA1,表示开始读取操作
    I2CSendByte(0xa1);
    // 等待从设备的应答信号
    I2CWaitAck();
    // 从EEPROM中读取一个字节的数据
    dat = I2CReceiveByte();
    // 发送非应答信号,表示数据接收完毕
    I2CSendNotAck();
    // 停止I2C通信
    I2CStop();
    
    // 返回读取到的数据
    return dat;
}

实际应用:

		if(single_key_flag[3]==1) // 按键1单次按下
    {
            unsigned char frq1_h=frq1>>8;// 获取频率1的高8位
			unsigned char frq1_l=frq1&0xff;// 获取频率1的低8位
			EEP_write(1, frq1_h);// 将频率1的高8位写入EEPROM地址1
			HAL_Delay(10);
			EEP_write(2, frq1_l);// 将频率1的低8位写入EEPROM地址2
            single_key_flag[3]=0; // 用完标记清零
    }

//DISP
u32 lcd_tick=0;

void Disp_proc ()
{
	if(uwTick-lcd_tick<100)
		return;
	lcd_tick=uwTick;
	
	if(ui==1)
	{
		u8 text[50];
		sprintf(text, "      DATE        ");
		LCD_DisplayStringLine(Line0, (unsigned char *)text);
		sprintf(text, "    V:%.2fV       ", r37_volt);
		LCD_DisplayStringLine(Line2, (unsigned char *)text);
		
		uint16_t eep_temp=(EEP_read(1)<<8)+EEP_read(2);// 从EEPROM读取数据并合并成一个16位整数,赋给eep_temp变量
		sprintf(text, "    FRQ_EEP:%d    ", eep_temp);
		LCD_DisplayStringLine(Line4, (unsigned char *)text);

		sprintf(text, "    FRQ1:%d       ", frq1);
		LCD_DisplayStringLine(Line6, (unsigned char *)text);
		sprintf(text, "    FRQ2:%d       ", frq2);
		LCD_DisplayStringLine(Line8, (unsigned char *)text);
	}
	
	if(ui==2)
	{
		u8 text[50];
		sprintf(text, "      Para        ");
		LCD_DisplayStringLine(Line0, (unsigned char *)text);
		sprintf(text, "    PA6:%d%%      ", pa6_duty);
		LCD_DisplayStringLine(Line2, (unsigned char *)text);
		sprintf(text, "    PA7:%d%%      ", pa7_duty);
		LCD_DisplayStringLine(Line4, (unsigned char *)text);
	}

}

MCP4017(可编程电阻):

 

void MCP_write(u8 dat)
{
    // 启动I2C通信,准备进行数据写入操作
    I2CStart();
    // 向MCP芯片发送写入地址0x5E,表示开始写入操作
    I2CSendByte(0x5e);
    // 等待从设备的应答信号,确保通信正常
    I2CWaitAck();
    // 向MCP芯片发送要写入的数据
    I2CSendByte(dat);
    // 等待从设备的应答信号
    I2CWaitAck();
    // 停止I2C通信
    I2CStop();
}

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 12:50:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 12:50:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 12:50:03       87 阅读
  4. Python语言-面向对象

    2024-04-13 12:50:03       96 阅读

热门阅读

  1. 【DNS】

    【DNS】

    2024-04-13 12:50:03      41 阅读
  2. 华为OD-C卷-结队编程[200分]

    2024-04-13 12:50:03       37 阅读
  3. 深入剖析Cargo缓存机制

    2024-04-13 12:50:03       42 阅读
  4. 在Ubuntu中设置中文输入法的步骤

    2024-04-13 12:50:03       119 阅读
  5. Ubuntu下载内核源代码

    2024-04-13 12:50:03       38 阅读
  6. 数据结构4:基于单链表的通讯录项目

    2024-04-13 12:50:03       37 阅读
  7. <Halcon> 变换矩阵求解

    2024-04-13 12:50:03       41 阅读
  8. 算法 第37天 贪心6

    2024-04-13 12:50:03       133 阅读
  9. 数据库系统大纲

    2024-04-13 12:50:03       78 阅读
  10. 【P2P】

    【P2P】

    2024-04-13 12:50:03      42 阅读
  11. 算法-日期问题

    2024-04-13 12:50:03       41 阅读
  12. Node.js 开发技巧

    2024-04-13 12:50:03       40 阅读
  13. 蓝桥杯嵌入式之电位器R37和R38存入EEPROM

    2024-04-13 12:50:03       36 阅读