你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32C542RC开发板I2C通讯实验

[复制链接]
老牛洋车 发布时间:2026-11-5 15:37

本次实验的对象之一是DS1307日历时钟芯片核模块:

I2C_08.png

这个模块还包含一个AT24C32EEPROM芯片,本次实验仅对DS1307芯片进行读写操作,未涉及AT24C32芯片的操作。

实验是在之前的项目基础上进行的,首先进入STM32CubeMX2来配置I2C:

I2C_01.png

STM32C542RC仅有一组I2C,启用I2C之后,选用PA11的PA12分别为SCL和SDA引脚:

I2C_02.png

I2C的速率选择标准的100KHz:

I2C_03.png

配置过程比较简单,生成配置文件后,就可以在VS Code里添加代码了。

首先是定义I2C句柄名:

I2C_05.png

然后在main()函数中获取句柄:

I2C_06.png

涉及本次实验的HAL库函数只有两个,分别是读写操作的函数:

I2C_04.png

对DS1307芯片操作的函数主要有两个,即读写操作:

I2C_07.png

另外就是初始化的函数,这个函数平时不使用,仅仅是对DS1307芯片掉电后、内部数据丢失了才需要使用,因为DS1307模块上配有3V的电池,可以保持芯片正常计时。初始化的函数如下:

`/******************************************************************************************

  • 函数名称: DS1307_Init()
  • 功能说明: 用当前日期(year,month,day,hour,minute)初始化DS1307
  • 输 入: 无
  • 输 出: uint8_t 0=RET_OK 初始化成功 1=RET_ERR 初始化出错
    ******************************************************************************************/
    void DS1307_Init(void)
    {
    uint8_t DS_Set;
    DS_Set = DS1307_ReadDate();
    if(DS_Set > 127){ //DS1307尚未工作,需进行初始化
    year = 2026;
    month = 11;
    day = 5;
    week = 4;
    hour = 12;
    minute = 0;
    second = 0;
    DS1307_WriteDate();
    }
    }
    `

这是实验过程的照片:

I2C_10.png

赞 收藏 评论0 发布时间:2026-11-5 15:37

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版