搜索
查看: 2479|回复: 6

[转载] stm8 调试硬件I2C心得

[复制链接]

该用户从未签到

15

主题

232

帖子

0

蝴蝶豆

金牌会员

最后登录
2019-11-11
发表于 2015-1-5 21:30:19 | 显示全部楼层 |阅读模式
Stm8不需要专门配置GPIO口,执行初始化就可以啦!有些stm8需要打开EEPROM设置I2C(看官方文档)。

  Stm8主要靠SR1和SR3状态寄存器判断I2C的情况(while(!XXXXX)就是出自这里),多半大家调不通!就是卡在这里(需要注意的是 寄存器有些位,只要读寄存器就可以清除,在仿真的时候,最好不要打开寄存器页面)。这里分软故障和硬故障:

  首先是硬故障: 一般是stm8芯片IO口坏啦,有些时候stm8能够写程序而且IO别的功能都是好的,单单是I2C用不起!还有就是IO上拉电压不够!我就遇到这样的问题,我IO 加上逻辑分析仪后就可以调通,不加就通不了。这个也搞啦我很久。

  软故障: 一般主要是设置CR1和CR2问题,只要按照我的参考程序设置就可以!

  我详细的讲讲,寄存器I2c_CR2 应答使能位(位2)ack。首先是理解:官方文档上面说的是ack应答使能,对是使能!很多人包括我自己 开始都认为是发送ack,导致每次stm8收到数据后,我们都手动在每次收到字节后加I2C_AcknowledgeConfig(I2C_ACK_CURR)无任何意义,因为在接收模式下,收到完整字节后,自动发送ack(提前是CR2 ack位使能,不需要专门CR2 ack位置1)   ,都是软件虚拟I2C用多啦!想当然啦!
还有就是使用这个ack!设置ACK都必须在接收字节前,也就是说为个在收到最后一个字节后产生一个NACK 脉冲,在读倒数第二个数据字节之后,必须清除ack位(ack=0)!设置ack同理! 还有需要 主要的地方 如果设置 ack=0; 下次需要重新产生ack的时候!需要手动置位ack!记住在开始接收之前!如果你只有一个字节正确,后面全部是0xFF...可能就是这个问题(切记!切记!很多例子都没有加上这句,包括风驰 的例子!! 不过 他没有加循环! 如果他再循环一次就会出现问题。)

  随便说说仿真调试!在调试过程中,最好不要打开I2C寄存器看!因为对寄存器的读,也会造成寄存器有些位重置!直接按Go,然后暂停。进去程序看卡在那里啦。

  操作库和寄存器编写程序,其实没有分别!不过为啦更好的理解,我在这里是操作寄存器!网上有人说加入中断会对I2C产生影响,我这里没有加中断。希望有后来人补全!

MLX90615(stm8硬驱动I2C程序完整版).zip (1.31 MB, 下载次数: 209)
回复

使用道具 举报

该用户从未签到

36

主题

577

帖子

4

蝴蝶豆

金牌会员

最后登录
2021-12-16
发表于 2015-1-6 15:46:56 | 显示全部楼层
楼主不错,谢谢分享。
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

13

帖子

0

蝴蝶豆

新手上路

最后登录
2015-1-20
发表于 2015-1-7 16:53:17 | 显示全部楼层
你的设备地址怎么设置的?
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

76

帖子

0

蝴蝶豆

中级会员

最后登录
2020-10-12
发表于 2015-1-13 14:13:21 | 显示全部楼层
我也请人教我做了个I2C的通信。真的实物出来调试很麻烦,官方库,循环模式,经常跑死,好不容易才调通的
回复 支持 反对

使用道具 举报

该用户从未签到

91

主题

4756

帖子

4

蝴蝶豆

论坛元老

最后登录
2021-2-27
发表于 2015-1-13 21:08:11 | 显示全部楼层
总觉得不是那么好弄的
回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

232

帖子

0

蝴蝶豆

金牌会员

最后登录
2019-11-11
 楼主| 发表于 2015-1-14 08:12:25 | 显示全部楼层
feixiang20 发表于 2015-1-13 21:08
总觉得不是那么好弄的

万事开头难,多积累,成功一次就好了
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

10

帖子

0

蝴蝶豆

新手上路

最后登录
2015-6-8
发表于 2015-1-14 20:35:23 | 显示全部楼层
下载了。。好东西要学习。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-5-7 17:58 , Processed in 1.174315 second(s), 39 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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