OpenEdv-开源电子网

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

请教个IIC的问题

[复制链接]

10

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-3-28
在线时间
0 小时
发表于 2013-5-17 21:34:09 | 显示全部楼层 |阅读模式
 请教大家个问题,24CXX芯片的SDA和SC是硬件上连接好的还是要软件去设置啊,我在原子的教程里看到程序是这样的
void IIC_Init(void)
{     
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );
  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11); //PB10,PB11 输出高
}
//产生IIC起始信号
void IIC_Start(void)
{
SDA_OUT();     //sda线输出
IIC_SDA=1;    
IIC_SCL=1;
delay_us(4);
  IIC_SDA=0;//START:when CLK is high,DATA change form high to low 
delay_us(4);
IIC_SCL=0;//钳住I2C总线,准备发送或接收数据 
}   
就是说把PB10,PB11用作SDL和SDA,是硬件连接好还是上面的程序去初始化啊?
另外我对
IIC_SDA=1;不理解,IIC_SDA查到PBout(11),是对PB11.0直接置1吗,各位别见笑,多多支持啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2386
金钱
2386
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-5-17 21:46:08 | 显示全部楼层
把PB10,PB11用作SDL和SDA,既要硬件连接好,也要程序去初始化。这里用的是模拟。IIC_SDA=1是对PB11.0置1。
态度决定一切
回复 支持 反对

使用道具 举报

10

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-3-28
在线时间
0 小时
 楼主| 发表于 2013-5-17 21:59:11 | 显示全部楼层
回复【2楼】冰封嗜魔:
---------------------------------
谢谢!您好,我还想问下,PBout(10)和PBout(11)是MEM_ADDR(BITBAND(addr, bitnum)),请问这里MEM_ADDR(BITBAND(addr, bitnum))的作用是怎么样的,比如PBout(10)难道是将PB10.0到PB10.7都置1,PBout(11)也是这样吗,PB11本身不就是个位吗,怎么会有PB11.0啊?
回复 支持 反对

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2386
金钱
2386
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-5-17 22:02:48 | 显示全部楼层
哪来的PB10.0?
态度决定一切
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-5-17 22:04:06 | 显示全部楼层
回复【3楼】gsp:
---------------------------------
看入门手册。有说的。
业余程序玩家。
回复 支持 反对

使用道具 举报

10

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-3-28
在线时间
0 小时
 楼主| 发表于 2013-5-17 22:06:30 | 显示全部楼层
回复【4楼】冰封嗜魔:
---------------------------------
您上面不是说IIC_SDA=1是对PB11.0置1吗,还有为什么用模拟啊?如果不知道控制器的SDL和SDA接的什么脚,有办法可以通过软件知道吗,谢谢了
回复 支持 反对

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2386
金钱
2386
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-5-17 22:14:32 | 显示全部楼层
写错了,抱歉哈,IIC_SDA=1是把PB11置1。具体实现思想,参考<<CM3权威指南>>第五章(87页~92页).
态度决定一切
回复 支持 反对

使用道具 举报

10

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-3-28
在线时间
0 小时
 楼主| 发表于 2013-5-17 22:30:00 | 显示全部楼层
回复【7楼】冰封嗜魔:
---------------------------------
非常感谢
回复 支持 反对

使用道具 举报

13

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2013-4-4
在线时间
0 小时
发表于 2013-6-1 15:46:05 | 显示全部楼层
回复【2楼】冰封嗜魔:
---------------------------------
什么叫模拟,?那如果实际操作的话,那跟模拟有什么区别?
回复 支持 反对

使用道具 举报

54

主题

1008

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2386
金钱
2386
注册时间
2012-11-22
在线时间
403 小时
发表于 2013-6-2 09:09:07 | 显示全部楼层
模拟就是用普通IO口模拟硬件IIC的工作方式。
态度决定一切
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 04:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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