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

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

[复制链接]
老牛洋车 发布时间:2019-9-10 13:34
    准备添加DS1302日历模块和AT24C02flash模块,这两个模块都是I2C通讯的,想启用I2C1来对这两个模块进行通讯。我将STM32CubeMX生成的代码复制到项目中,编译总是出错,折腾了几天,最后才摸索出添加的步骤,除了要将I2C1的配置代码复制过来,还要将stm32g4xx_hal_conf.h文件中被注释掉的宏定义恢复(如下图),这样才能编译通过。
9 t1 q' \. `0 c2 |( o1 J% A begin_01.jpg 1 b( |3 B4 L9 n
) h: o7 f+ r% a" y+ A

; D, L6 T2 }) f/ O7 A$ b    下图为复制I2C的配置代码:+ b) L. u& H- r! N" _
begin_03.jpg
2 Z' f6 ]( e& Y$ B% v1 s% ^
; C; T- L% N! k8 g6 ^% N8 _ begin_02.jpg 4 f* e2 m6 J0 G$ b
9 ^  z0 x, W8 w3 @! W7 r" R# |
1 G1 N$ m, B5 l" k/ V8 \
    通过分析,配置其他外设如SPI、USART等外设也应该按此步骤进行。: z" A& @+ L6 i& S* T
    I2C1配置好之后,移植DS1302的驱动代码又花费了几天时间,范例中提供的都是大量数据通讯,没有找到单个字节通讯的代码,自己反复尝试都不行,一晃4~5天的时间就过了,迫不得已,今天只好延用自定义GPIO引脚进行模拟I2C通讯,只花了一上午时间便完成了代码移植,成功地驱动了DS1302模块,下面是调试过程:
; ?5 ?5 R) c4 e0 V1 m" z
- a' O! K& D7 B. g    月日和年份交替显示——显示月日和时间1 G4 g' g4 @+ G, D
datetime1.jpg 6 [7 y0 p5 k: L$ A7 z; R
4 s6 y( }2 \3 \. r

0 v) B* r% h$ P7 {* T5 g2 [0 R1 x" j* ?    月日和年份交替显示——显示年份和时间
* l; W: E3 e: s. r. U" ^5 p2 p/ f/ ~" Q5 j% b. r  k
datetime0.jpg ) o4 _$ c) F6 z$ ]7 s) _# k

4 g- c. q' b* n! U$ f
$ h2 C! Q! `  r( c9 ^+ O
收藏 评论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
, \; ~2 z& o- C/ ?8 ^' k  T5 n, C谢谢分享  能分享一下你的完整程序吗  正在学习  有个参考 能理解深刻些!!! ...
! O9 Y) }: h& _) f
行啊,已经发布在此贴中https://www.stmcu.org.cn/module/ ... p;extra=#pid2458269
wang5825 回答时间:2019-9-18 09:58:27
谢谢分享  非常感谢!!!
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版