你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 12802|回复: 17

STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。

[复制链接]

7

主题

22

回帖

0

蝴蝶豆

初级会员

最后登录
2019-8-3
发表于 2014-7-10 10:30:50 | 显示全部楼层 |阅读模式
 void I2C_Init(void)
{
        I2C_close();                       
        I2C_Ack();                       
        I2C_FREQR=0x0f;                //I2C外设时钟频率为8MHz
        I2C_CCRH=0x00;                //
        I2C_CCRL=0x28;
        I2C_TRISER=0x11;                       
        I2C_open();
 
}
 
void I2C_Write(unsigned char highbyte_add, unsigned char lowbyte_add, unsigned char data)
{
        unsigned char temp;
        I2C_start();
        while(!I2C_SBask);
        I2C_writebyte(Write_add);
        while(!I2C_addrask);
        temp=I2C_SR1;
        temp=I2C_SR3;
        I2C_writebyte(highbyte_add);
        while(!I2C_TxEask);
        I2C_writebyte(lowbyte_add);
        while(!I2C_TxEask);
        I2C_writebyte(data);
        while(!I2C_TxEask);
        I2C_stop();
}
 
unsigned char I2C_Read(unsigned char highbyte_add,unsigned char lowbyte_add)
{
        unsigned char temp;
        I2C_start();
        while(!I2C_SBask);
        I2C_writebyte(Write_add);      
        while(!I2C_addrask);         连续运行时总会卡在这一步,用示波器观察是没有收到应答信号。但是一步一步仿真测试的话是能接收         到应答信号的。在写数据到EEPROM的操作中不会出现这样的问题。
        temp=I2C_SR3;
        I2C_writebyte(highbyte_add);
        while(!I2C_TxEask);
        temp=I2C_SR3;
        I2C_writebyte(lowbyte_add);
        while(!I2C_TxEask);
        I2C_start();
        while(!I2C_SBask);
        I2C_writebyte(Read_add);
        while(!I2C_addrask);
        temp=I2C_SR3;
        while(!I2C_RxNeask);
        temp=I2C_DR;
        return temp;
        I2C_NAck();
        I2C_stop();
       
}
 
哪位知道原因?我操作的是24C256。
<
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2014-7-10 15:10:15 | 显示全部楼层

RE:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。

你的频率配置的多少?建议用100-400Khz的频率。
回复 支持 反对

使用道具 举报

7

主题

22

回帖

0

蝴蝶豆

初级会员

最后登录
2019-8-3
 楼主| 发表于 2014-7-10 15:17:22 | 显示全部楼层

回复:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。

回复第 2 楼 于2014-07-10 15:10:15发表:
你的频率配置的多少?建议用100-400Khz的频率。
100KHz的
 
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2014-7-10 16:36:25 | 显示全部楼层

RE:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。

用示波器测试一下,I2C是否回复了ACK。单步和连续的时候都测试一下。
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2014-7-10 16:43:23 | 显示全部楼层

RE:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。

0x0f,这个应该是7Mhz的频率。8M是0x08
回复 支持 反对

使用道具 举报

7

主题

22

回帖

0

蝴蝶豆

初级会员

最后登录
2019-8-3
 楼主| 发表于 2014-7-10 22:40:08 | 显示全部楼层

回复:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。

回复第 5 楼 于2014-07-10 16:43:23发表:
0x0f,这个应该是7Mhz的频率。8M是0x08
 
就是用示波器观察的,单步执行发送地址后能获取应答信号,连续运行就会出错,无应答。8MHz是0x0f,如果是8的话那是用10进制表示的时候。
 
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2014-7-11 09:26:15 | 显示全部楼层

RE:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。

还是频率的问题,我可能算错了。0f应该是15M的频率。8M是0x08。这个楼主可以再看看手册。
回复 支持 反对

使用道具 举报

7

主题

22

回帖

0

蝴蝶豆

初级会员

最后登录
2019-8-3
 楼主| 发表于 2014-7-11 09:52:24 | 显示全部楼层

回复:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。

回复第 7 楼 于2014-07-11 09:26:15发表:
还是频率的问题,我可能算错了。0f应该是15M的频率。8M是0x08。这个楼主可以再看看手册。
 
 
 
是我算错了,8MHz是0x08。晚上回家我再测试效果。
 
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2014-7-11 09:53:43 | 显示全部楼层

RE:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。

看现象应该是频率太高引起的不匹配。
回复 支持 反对

使用道具 举报

7

主题

22

回帖

0

蝴蝶豆

初级会员

最后登录
2019-8-3
 楼主| 发表于 2014-7-11 10:11:35 | 显示全部楼层

回复:STM8 I2C硬件连续运行情况下接收数据时发送地址后接收不到应答信号。

回复第 9 楼 于2014-07-11 09:53:43发表:
看现象应该是频率太高引起的不匹配。
 
 
刚看了一下,我系统时钟设置的就是8M,能提供给I2C接口的最高频率应该也只有8M吧?我刚看了之前测试拍的照片看时钟线频率确实是100KHz。我把照片也传一下。
这张是无应答的
无应答.JPG
这张是有应答的
应答.JPG
 
最后这张是昨天晚上调试发现的问题,很奇怪。下面是读数据里接收数据的有端程序。
        I2C_writebyte(Read_add);
        while(!I2C_addrask);
        temp=I2C_SR3;   在执行完这条后I2C_DR里确实正确的读取了24C256里面的内容
        temp=I2C_DR;     但一执行读取I2C_DR里的数据这条后I2C_DR里的数据就全部制1,变成0xff,temp接收到的数据也就成0xff了。
接收后.JPG
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版