OpenEdv-开源电子网

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

请教关于stm32IIC的IO配置

[复制链接]

13

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
241
金钱
241
注册时间
2016-2-2
在线时间
80 小时
发表于 2018-2-3 16:02:16 | 显示全部楼层 |阅读模式
10金钱
最近在做一个IIC的数字电位器应用。在参考原子代码的时候遇到一些问题,主要是关于IIC的引脚配置。

首先在F1的历程中进行了如下的定义
#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}      //数据输入根据寄存器配置为输入上拉或下拉模式。
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}    //数据输出推挽 50MHZ

上面的代码是关于数据线引脚的模式配置,其中输入模式并没有指定上拉或者下拉。而在F1中上拉下拉由ODR寄存器决定。在使用IIC的过程中不同的数据输出会改变ODR寄存器的值,那么我切换到输入模式的时候由于IO没有复位是不是就会根据之前的ODR寄存器状态决定上拉或者下拉?这在接收数据是不会出现影响吗?我自己尝试作为浮空输入也可以进行通讯,关于这个问题不是很理解。

其次我还参考了F4的例程
#define SDA_IN()  {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=0<<9*2;}

最佳答案

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

上下拉不需要设置,IIC都有默认的外部上拉。你直观设置输出高低电平即可。不过建议一般都是设置为上拉。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-2-3 16:02:17 | 显示全部楼层
上下拉不需要设置,IIC都有默认的外部上拉。你直观设置输出高低电平即可。不过建议一般都是设置为上拉。
回复

使用道具 举报

13

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
241
金钱
241
注册时间
2016-2-2
在线时间
80 小时
 楼主| 发表于 2018-2-3 16:02:58 | 显示全部楼层
最近在做一个IIC的数字电位器应用。在参考原子代码的时候遇到一些问题,主要是关于IIC的引脚配置。

首先在F1的历程中进行了如下的定义
#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}      //数据输入根据寄存器配置为输入上拉或下拉模式。
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}    //数据输出推挽 50MHZ
上面的代码是关于数据线引脚的模式配置,其中输入模式并没有指定上拉或者下拉。而在F1中上拉下拉由ODR寄存器决定。在使用IIC的过程中不同的数据输出会改变ODR寄存器的值,那么我切换到输入模式的时候由于IO没有复位是不是就会根据之前的ODR寄存器状态决定上拉或者下拉?这在接收数据是不会出现影响吗?我自己尝试作为浮空输入也可以进行通讯,关于这个问题不是很理解。

其次我还参考了F4的例程
#define SDA_IN()  {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=0<<9*2;}        //数据输入
#define SDA_OUT() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=1<<9*2;} //数据输出
根据寄存器可知数据线引脚的模式仅仅只配置为输出输入,并没有推挽复用或者上拉下拉模拟等参数。与F1的配置又不相同这是什么原因呢?
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2018-2-4 09:21:31 | 显示全部楼层
1、这是操作MODE寄存器,和上下拉没关系
2、F0、F3、F4当中,IO的上下拉是PUPD寄存器进行配置的,和ODR没关系
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

13

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
241
金钱
241
注册时间
2016-2-2
在线时间
80 小时
 楼主| 发表于 2018-2-5 07:39:53 | 显示全部楼层
谢谢两位的回答,我自己调试了在外部上拉的情况下,设置内部上拉下拉浮空输入以及开漏推挽输出都不会影响通讯。
回复

使用道具 举报

13

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
241
金钱
241
注册时间
2016-2-2
在线时间
80 小时
 楼主| 发表于 2018-2-5 07:41:26 | 显示全部楼层
谢谢两位的回答  我自己调试了  配置内部上拉下拉浮空输入以及推挽开漏输出都不会影响通讯。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 17:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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