OpenEdv-开源电子网

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

关于软I2C的问题。很奇怪

[复制链接]

9

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2018-7-4
在线时间
44 小时
发表于 2018-9-19 17:06:07 | 显示全部楼层 |阅读模式
1金钱
我用的mini板子,用PC11或者PC12当SDA脚,SCL叫随意,都能通信,但是当换了其他脚当SDA,就不行了,这是什么现象啊!


#define SDA_IN()  {GPIOC->CRH&=0xFFFFFF0F;GPIOC->CRH|= 0x00000080;}       
#define SDA_OUT() {GPIOC->CRH&=0xFFFFFF0F;GPIOC->CRH|= 0x00000030;}

#define I2C_SCL    PCout(4) //SCL
#define I2C_SDA    PCout(9) //SDA         
#define READ_SDA   PCin(9)  


IO口初始化成PC4,9,
但是就是不能通信,

改成11脚当SDA的时候
#define SDA_IN()  {GPIOC->CRH&=0xFFFF0FFF;GPIOC->CRH|= 0x00008000;}       
#define SDA_OUT() {GPIOC->CRH&=0xFFFF0FFF;GPIOC->CRH|= 0x00003000;}
         
#define I2C_SCL    PCout(12) //SCL
#define I2C_SDA    PCout(11) //SDA         
#define READ_SDA   PCin(11)  
IO口初始化成11,12
这样就能用了!



最佳答案

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

知道原因了,看了mini的原理图,发现只有PC11和PC12有上拉电阻,如果没有上拉电阻,SDA通信会不稳定,所以后续没有数据。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2018-7-4
在线时间
44 小时
 楼主| 发表于 2018-9-19 17:06:08 | 显示全部楼层
知道原因了,看了mini的原理图,发现只有PC11和PC12有上拉电阻,如果没有上拉电阻,SDA通信会不稳定,所以后续没有数据。
回复

使用道具 举报

9

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2018-7-4
在线时间
44 小时
 楼主| 发表于 2018-9-19 17:07:30 | 显示全部楼层
我就很纳闷啊!这是时序I2C,为啥改了SDA就不能用了!
回复

使用道具 举报

9

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2018-7-4
在线时间
44 小时
 楼主| 发表于 2018-9-19 17:30:52 | 显示全部楼层
一步一步debug了,发现换了SDA脚后,I2C本该读多个值的,只读开始那个值了,
                uint8_t PTdata[24];
                uint8_t T1data;
                uint8_t Hdata[8];
       
                I2CreadBytes(BME280_WritAddress, 0xD0, 1, &ID);
       
                I2CreadBytes(BME280_WritAddress, 0x88, 24, PTdata);
                I2CreadBytes(BME280_WritAddress, 0xA1,  1, &T1data);
                I2CreadBytes(BME280_WritAddress, 0xE1,  7, Hdata);
只有
ID,PTdata[0], T1data,Hdata[0]有值。
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14433
金钱
14433
注册时间
2018-8-3
在线时间
1157 小时
发表于 2018-9-19 19:43:02 | 显示全部楼层
帮顶...
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-9-19 20:45:39 | 显示全部楼层
测试的时候用了液晶显示不?
回复

使用道具 举报

9

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2018-7-4
在线时间
44 小时
 楼主| 发表于 2018-9-20 09:13:30 | 显示全部楼层
peng1554 发表于 2018-9-19 20:45
测试的时候用了液晶显示不?

没用,用的串口
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 01:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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