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

【STM32G4 NUCLEO G431RB】+ I2C,想说爱你不容易

[复制链接]
老牛洋车 发布时间:2019-9-10 13:34
    准备添加DS1302日历模块和AT24C02flash模块,这两个模块都是I2C通讯的,想启用I2C1来对这两个模块进行通讯。我将STM32CubeMX生成的代码复制到项目中,编译总是出错,折腾了几天,最后才摸索出添加的步骤,除了要将I2C1的配置代码复制过来,还要将stm32g4xx_hal_conf.h文件中被注释掉的宏定义恢复(如下图),这样才能编译通过。
5 y9 r! _& M* Z1 `" K/ J begin_01.jpg
6 M# [( [& d  y( z, L3 {' e6 k5 I6 b' w6 E: N

* f. K. }$ m9 w' d) w2 p    下图为复制I2C的配置代码:
. _; k/ r' A  [' @* \3 W begin_03.jpg
% h" ]' Y5 I3 `% F3 ?# t8 n: T, g7 z
begin_02.jpg
1 m1 b0 H- U7 }  t% w; {8 E& c* \4 X1 T

3 m- K( {* n" D8 L7 J    通过分析,配置其他外设如SPI、USART等外设也应该按此步骤进行。% V* O. n, j! w0 m
    I2C1配置好之后,移植DS1302的驱动代码又花费了几天时间,范例中提供的都是大量数据通讯,没有找到单个字节通讯的代码,自己反复尝试都不行,一晃4~5天的时间就过了,迫不得已,今天只好延用自定义GPIO引脚进行模拟I2C通讯,只花了一上午时间便完成了代码移植,成功地驱动了DS1302模块,下面是调试过程:
3 m* ~1 E( z( j: ~1 M% Z; R" x: |
    月日和年份交替显示——显示月日和时间) H) f  n9 a2 Q* m! s7 N
datetime1.jpg
8 G4 H- L1 s$ \7 W0 @7 r# }/ U- \% X

* Y, g+ V" r$ V. W. V6 m, X    月日和年份交替显示——显示年份和时间( M+ U& N% e5 o

+ q# W, g2 ^& s datetime0.jpg
: e9 h. D* `! |$ P6 N- z2 t2 b# d4 e* I" [1 h# H
; x5 d: |7 m3 m
收藏 评论5 发布时间:2019-9-10 13:34

举报

5个回答
lyg407 回答时间:2019-9-10 13:52:02
顶一下楼主。
老牛洋车 回答时间:2019-9-17 13:01:44
经过一个多星期的反复测试,终于基本上了解了I2C的通讯协议,已经成功地用软件I2C驱动了DS1307日历芯片和AT24C32EEPROM,但对HAL库的硬件I2C还不知道如何使用。
wang5825 回答时间:2019-9-17 13:59:27
谢谢分享  能分享一下你的完整程序吗  正在学习  有个参考 能理解深刻些!!!
老牛洋车 回答时间:2019-9-17 15:53:16
danka 发表于 2019-9-17 13:59
0 w3 Y/ J# w" ]1 L. E, D; R/ j谢谢分享  能分享一下你的完整程序吗  正在学习  有个参考 能理解深刻些!!! ...

% M& i6 @" I, K1 G0 `6 k行啊,已经发布在此贴中https://www.stmcu.org.cn/module/ ... p;extra=#pid2458269
wang5825 回答时间:2019-9-18 09:58:27
谢谢分享  非常感谢!!!
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版