OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 760|回复: 8

请教一下有关于STM32F4的I2C3问题

[复制链接]

13

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2023-10-17
在线时间
49 小时
发表于 2024-3-7 16:53:26 | 显示全部楼层 |阅读模式
5金钱
请教一下各位大佬,为什么我用I2C1的引脚(PB8,PB9)能读到传感器的值,改成I2C3(PA8,PC9)就读不到了?

最佳答案

查看完整内容[请看2#楼]

你这里只是初始化部分,程序里应该还有SDA切换为输出或者输入的代码,那里也是对IO口的模式进行配置的,你是不是这里没改
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

881

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4201
金钱
4201
注册时间
2019-9-4
在线时间
882 小时
发表于 2024-3-7 16:53:27 | 显示全部楼层
yangwang1025 发表于 2024-3-8 11:01
PB8 PB9  改成 PA8 PC9其他没变

你这里只是初始化部分,程序里应该还有SDA切换为输出或者输入的代码,那里也是对IO口的模式进行配置的,你是不是这里没改
回复

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4588
金钱
4588
注册时间
2015-1-10
在线时间
574 小时
发表于 2024-3-8 09:56:34 | 显示全部楼层
查GPIO配置、复用、IIC寄存器
回复

使用道具 举报

13

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2023-10-17
在线时间
49 小时
 楼主| 发表于 2024-3-8 11:01:05 | 显示全部楼层
阿侑kevin 发表于 2024-3-8 09:56
查GPIO配置、复用、IIC寄存器
  1. void iic_init(void)
  2. {
  3.     GPIO_InitTypeDef gpio_init_struct;

  4.     IIC_SCL_GPIO_CLK_ENABLE();                                                                  /* SCL引脚时钟使能 */
  5.     IIC_SDA_GPIO_CLK_ENABLE();                                                                  /* SDA引脚时钟使能 */

  6.     gpio_init_struct.Pin   = IIC_SCL_GPIO_PIN;
  7.     gpio_init_struct.Mode  = GPIO_MODE_OUTPUT_PP;                        /* 推挽输出 */
  8.     gpio_init_struct.Pull  = GPIO_PULLUP;                                /* 上拉 */
  9.     gpio_init_struct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;                 /* 快速 */
  10.     HAL_GPIO_Init(IIC_SCL_GPIO_PORT, &gpio_init_struct);                /* SCL */

  11.     gpio_init_struct.Pin   = IIC_SDA_GPIO_PIN;
  12.     gpio_init_struct.Mode  = GPIO_MODE_OUTPUT_OD;                        /* 开漏输出 */
  13.     HAL_GPIO_Init(IIC_SDA_GPIO_PORT, &gpio_init_struct);                /* SDA */
  14.                                                                                                                                 /* SDA引脚模式设置,开漏输出,上拉, 这样就不用再设置IO方向了, 开漏输出的时候(=1), 也可以读取外部信号的高低电平 */
  15.     iic_stop();                                                                                             /* 停止总线上所有设备 */
  16. }
复制代码


PB8 PB9  改成 PA8 PC9其他没变
回复

使用道具 举报

17

主题

161

帖子

0

精华

高级会员

Rank: 4

积分
955
金钱
955
注册时间
2022-7-21
在线时间
446 小时
发表于 2024-3-10 15:22:03 | 显示全部楼层
你这个看着像是模拟IIC的,你先试试看能不能对这两个IO进行高低电平控制
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2024-3-12 20:01:29 | 显示全部楼层
仿真找问题
回复

使用道具 举报

13

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2023-10-17
在线时间
49 小时
 楼主| 发表于 2024-3-28 11:54:53 | 显示全部楼层
A571157242 发表于 2024-3-11 09:38
你这里只是初始化部分,程序里应该还有SDA切换为输出或者输入的代码,那里也是对IO口的模式进行配置的, ...

是的,读写数据的时候,读sda的数据把PC9写成PB9了
回复

使用道具 举报

13

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2023-10-17
在线时间
49 小时
 楼主| 发表于 2024-3-28 11:56:16 | 显示全部楼层

找到问题了,谢谢原子哥!
回复

使用道具 举报

13

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2023-10-17
在线时间
49 小时
 楼主| 发表于 2024-3-28 11:56:42 | 显示全部楼层
阿侑kevin 发表于 2024-3-8 09:56
查GPIO配置、复用、IIC寄存器

找到问题了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 10:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表