搜索
查看: 1840|回复: 3

[已解决] STM8 Hardware I2C

[复制链接]

该用户从未签到

1

主题

6

帖子

0

蝴蝶豆

初级会员

最后登录
2018-12-26
发表于 2017-8-15 16:19:38 | 显示全部楼层 |阅读模式
最近新使用STM8S003F芯片,在调试硬件I2C的遇到了一个奇怪的问题:示波器仅仅能够量到起始信号,然后一直保持低电平,直到超时。我的理解:不管Slave地址正不正确,SCL应该能够得输出吧,可是什么都没有?下面是程序段。

CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);
I2C_Init(400000, 0xA0,I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, (uint8_t)16 );
I2C_GenerateSTART(ENABLE);
while (!I2C_CheckEvent(I2C_EVENT_MASTER_MODE_SELECT));
{
    I2C_CHECK_TIMEOT();
}
I2C_Send7bitAddress(0xA0, I2C_DIRECTION_TX);
while (!I2C_CheckEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));



{
    I2C_CHECK_TIMEOT();
}
回复

使用道具 举报

该用户从未签到

1

主题

6

帖子

0

蝴蝶豆

初级会员

最后登录
2018-12-26
 楼主| 发表于 2017-8-15 17:56:35 | 显示全部楼层
上拉电阻4.7K,把Slave断开,换片新的STM8S003F都不行,发送地址的时候量不到SCL,看来只能上模拟I2C。遇到这种情况的童鞋,知会一声,不胜感激。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
    发表于 2018-3-4 13:20:55 | 显示全部楼层
    请参考,固件库中的样例程序“STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Examples\I2C\I2C_EEPROM” 傲游截图20180304131426.jpg

    还有函数“sEE_WritePage()”
    傲游截图20180304131906.jpg

    你的while后来带了分号,下面的I2C_CHECK_TIMEOT()不执行
    傲游截图20180304132021.jpg

    评分

    参与人数 1蝴蝶豆 +3 收起 理由
    zero99 + 3

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    6

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2018-12-26
     楼主| 发表于 2018-12-26 10:07:04 | 显示全部楼层
    I2C_CHECK_TIMEOUT()会执行的
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-4-28 11:54 , Processed in 1.172730 second(s), 41 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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