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

STM8 Hardware I2C

[复制链接]
tony2simmy 提问时间:2017-8-15 16:19 /
最近新使用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();
}
收藏 评论3 发布时间:2017-8-15 16:19

举报

3个回答
tony2simmy 回答时间:2017-8-15 17:56:35
上拉电阻4.7K,把Slave断开,换片新的STM8S003F都不行,发送地址的时候量不到SCL,看来只能上模拟I2C。遇到这种情况的童鞋,知会一声,不胜感激。
七哥 回答时间: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

查看全部评分

tony2simmy 回答时间:2018-12-26 10:07:04
I2C_CHECK_TIMEOUT()会执行的
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版