OpenEdv-开源电子网

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

i2c问题 PBout(11) PBin(11)

[复制链接]

111

主题

265

帖子

0

精华

高级会员

Rank: 4

积分
740
金钱
740
注册时间
2014-3-4
在线时间
6 小时
发表于 2014-3-4 15:25:37 | 显示全部楼层 |阅读模式
//IO操作函数  
#define IIC_SCL    Bout(10) //SCL
#define IIC_SDA    Bout(11) //SDA  
#define READ_SDA   PBin(11)  //输入SDA 

I2C实验


这里 Bout(11)  Bin(11)  分别是什么东东,PB11又输出又输入??




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-4-6
在线时间
4 小时
发表于 2015-5-6 21:56:19 | 显示全部楼层
回复【5楼】傻子:
---------------------------------
回复【4楼】ricefat:
---------------------------------
不是如果在251之前READ_SDA为0 
那么就跳出while 执行后面的 
IIC_SCL=0;//时钟输出0       
return 0;  
u8 IIC_Wait_Ack(void)返回0
吗???
回复 支持 1 反对 0

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-3-4 17:01:54 | 显示全部楼层
回复【楼主位】傻子:
---------------------------------
对,发送的时候是输出,接收的时候是输入
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

111

主题

265

帖子

0

精华

高级会员

Rank: 4

积分
740
金钱
740
注册时间
2014-3-4
在线时间
6 小时
 楼主| 发表于 2014-3-4 18:59:52 | 显示全部楼层
回复【2楼】Badu_Space:
---------------------------------
//等待应答信号到来
//返回值:1,接收应答失败
//        0,接收应答成功
u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
SDA_IN();      //SDA设置为输入  
IIC_SDA=1;delay_us(1);    
IIC_SCL=1;delay_us(1);  
while(READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
return 1;
}
}
IIC_SCL=0;//时钟输出0     
return 0;  

那这段程序又是怎么执行的
SDA_IN();      //SDA设置为输入  
IIC_SDA=1;delay_us(1);    然后while(READ_SDA)是否循环?
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-4 19:49:12 | 显示全部楼层
回复【3楼】傻子:
---------------------------------
SDA_IN();
IIC_SDA=1;
第一句将端口设置为输入模式
第二句将端口上拉
这两句将端口改为上拉输入模式。

然后进入while循环
循环一次ucErrTime加1
当循环到251的时候 执行
IIC_Stop();
return 1;
并跳出while,使u8 IIC_Wait_Ack(void)返回1
如果在251之前READ_SDA为1
那么就跳出while 执行后面的
IIC_SCL=0;//时钟输出0      
return 0; 
u8 IIC_Wait_Ack(void)返回0
回复 支持 反对

使用道具 举报

111

主题

265

帖子

0

精华

高级会员

Rank: 4

积分
740
金钱
740
注册时间
2014-3-4
在线时间
6 小时
 楼主| 发表于 2014-3-4 19:55:13 | 显示全部楼层
回复【4楼】ricefat:
---------------------------------
明白了,谢谢
回复 支持 反对

使用道具 举报

15

主题

82

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2015-4-13
在线时间
0 小时
发表于 2015-8-14 14:58:44 | 显示全部楼层
回复【4楼】ricefat:
---------------------------------
这里的251是必须设置为251吗?为什么呢
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2014-2-11
在线时间
13 小时
发表于 2015-8-14 16:12:14 | 显示全部楼层
250就是一个超时溢出,你可以设少点
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 02:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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