OpenEdv-开源电子网

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

请教:i2c 调试--- while((I2C_SR1&0x01)==0);//等待条件发送完成,这一步不行

[复制链接]

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-12-2
在线时间
11 小时
发表于 2014-5-1 10:37:05 | 显示全部楼层 |阅读模式

#include"iostm8s105k4.h"
void I2C_Init(void)//初始化IIC
{
 
  CLK_PCKENR1 |= 0x01;            // 打开f(MASTER)与外设I2C的连接
 I2C_CR1_PE = 0;
  I2C_FREQR = 8;                 // input clock to I2C - 16MHz
  I2C_CCRH = 0x00;                // standard mode, duty 1/1 bus speed 100kHz
  I2C_CCRL = 0xA0;                // CCR= 40 - (SCLhi must be at least 4000+1000=5000ns!)
  I2C_TRISER = 5;                // 1000ns/(125ns) + 1  (maximum 1000ns)
  I2C_OARH |= 0x40;
  I2C_OARL = 0xA0;               // own address A0;
  I2C_ITR = 7;                 // enable Event & error interrupts
  I2C_CR2 |= 0x04;               // ACK=1, Ack enable
  I2C_CR1 &= ~0x80;              // Stretch enable
 
  I2C_CR1_PE = 1;              
 

}
int main(void)
{
  PE_DDR_DDR5=1;
  PE_CR1_C15=1;
  PE_CR2_C25=0;
  PE_ODR_ODR5=1;
 
  CLK_CKDIVR = 0x00;

  /*I2C初始化*/
  I2C_Init();
  /*起始条件*/

  I2C_CR2 &=~ 0x04; //不返回应答
  while((I2C_SR3&0x02)==1);//I2C准备就绪?
 
  I2C_CR2|=0x01;//起始位产生

  while((I2C_SR1&0x01)==0);//等待条件发送完成,这一步不行

  PE_ODR_ODR5  = 0;  // 表示起始条件已经发送
  while(1);
}

生命在于运动
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-5-1 13:29:17 | 显示全部楼层
硬件IIC呀?如果是建议你放弃,用软件模拟的吧
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2012-1-4
在线时间
20 小时
发表于 2014-5-2 12:27:48 | 显示全部楼层
我也是卡在这一步不知道怎么解决
s003测试通过的硬件IIC代码复制到s105上就不行了
就卡在这一步
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-12-2
在线时间
11 小时
 楼主| 发表于 2014-5-4 08:55:00 | 显示全部楼层
回复【3楼】a451993547:
---------------------------------
是不是配置的问题,这方面的资料真难找,
生命在于运动
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2013-4-22
在线时间
10 小时
发表于 2016-4-27 20:26:29 | 显示全部楼层
不知道大家解决了没有,我也一直就是在while((I2C_SR1&0x01)==0);//等待条件发送完成,这一步不行
也是STM8S105系列的芯片
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2018-6-13
在线时间
15 小时
发表于 2018-9-5 15:59:35 | 显示全部楼层
a451993547 发表于 2014-5-2 12:27
我也是卡在这一步不知道怎么解决
s003测试通过的硬件IIC代码复制到s105上就不行了
就卡在这一步

S003 卡在这一步。。。层主是怎么调的啊,求回复,感谢
回复 支持 反对

使用道具 举报

头像被屏蔽

5

主题

91

帖子

0

精华

禁止访问

积分
195
金钱
195
注册时间
2017-12-20
在线时间
24 小时
发表于 2018-9-23 21:32:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

5

主题

91

帖子

0

精华

禁止访问

积分
195
金钱
195
注册时间
2017-12-20
在线时间
24 小时
发表于 2018-9-23 21:33:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2018-9-29 21:27:40 | 显示全部楼层
595953427 发表于 2018-9-23 21:33
你是把单片机做主机用吗?

我用过F302硬件I2C做过主机,也做过从机,都可以,从机已经用到项目上了,主机没有
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

头像被屏蔽

5

主题

91

帖子

0

精华

禁止访问

积分
195
金钱
195
注册时间
2017-12-20
在线时间
24 小时
发表于 2018-10-10 23:45:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 12:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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