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

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

[复制链接]
老牛洋车 发布时间:2019-9-10 13:34
    准备添加DS1302日历模块和AT24C02flash模块,这两个模块都是I2C通讯的,想启用I2C1来对这两个模块进行通讯。我将STM32CubeMX生成的代码复制到项目中,编译总是出错,折腾了几天,最后才摸索出添加的步骤,除了要将I2C1的配置代码复制过来,还要将stm32g4xx_hal_conf.h文件中被注释掉的宏定义恢复(如下图),这样才能编译通过。% |5 y8 B( ]7 i! W7 s
begin_01.jpg
4 k& p1 Z- Y% D6 o& x3 e" y
, u5 v& ^' f! r. S5 m  E- \
9 j' o% Z/ l8 P5 Y2 j    下图为复制I2C的配置代码:1 u  ?( f/ }- }& ^7 F
begin_03.jpg $ ?* E' o: h$ y4 f$ @+ r. j- q# p
9 R; w3 {- e4 w4 [
begin_02.jpg
* Q: G% j0 |0 ^/ n3 z& ^2 \# _3 I# k2 S8 s3 ~

# M9 d! q( M4 ]2 W7 R0 H5 a    通过分析,配置其他外设如SPI、USART等外设也应该按此步骤进行。* ]- _" X  e7 A0 Q# _1 B
    I2C1配置好之后,移植DS1302的驱动代码又花费了几天时间,范例中提供的都是大量数据通讯,没有找到单个字节通讯的代码,自己反复尝试都不行,一晃4~5天的时间就过了,迫不得已,今天只好延用自定义GPIO引脚进行模拟I2C通讯,只花了一上午时间便完成了代码移植,成功地驱动了DS1302模块,下面是调试过程:
# G, B5 q* O% J7 W9 v" O1 J: X9 V1 ^
    月日和年份交替显示——显示月日和时间
5 y3 n( ]5 g" x) \& m datetime1.jpg
3 @2 f& R9 l0 {, ?
6 t8 o6 j7 }) H* H( j& u. Q. E$ d$ j2 g- A. ~% {1 I! [* U
    月日和年份交替显示——显示年份和时间
- j0 E) R- q" z7 x8 P4 c0 X# |* g9 d% U) ?  C
datetime0.jpg
( F" ~1 Z% t5 V
# x: ~- F: |" {0 K( E( a
, L5 q# r7 `. ?5 ^0 c* C+ ^: Q
收藏 评论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- o! H$ ^6 ]# J0 k% d. M- n
谢谢分享  能分享一下你的完整程序吗  正在学习  有个参考 能理解深刻些!!! ...

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