打印

讨论一下STM32, I2C的问题

[复制链接]
2197|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kail77|  楼主 | 2013-7-9 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前总结的有三种方式:
1.硬件方式,库函数。状态不稳定,速度太快容易死在I2C_CheckEvent()...
2.GPIO延时模拟
3.CPAL,最高中断优先级+DMA..(太浪费资源,还担心影响主任务)

很多人都推荐方法2,但我想延时函数{for(i=0;i<100;i++)} 也会被中断,会不会造成延时过长,波形通讯不对?
沙发
hbl_cn| | 2013-7-9 17:18 | 只看该作者
I2C master模式延时长跟波形不对有啥关系,不是有SCL控制着同步嘛

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
kail77 + 1 淡定
板凳
hkcj| | 2013-7-9 18:42 | 只看该作者
帮楼主顶一个   很不错   顶一个   需要好好看看

使用特权

评论回复
地板
kail77|  楼主 | 2013-7-9 21:01 | 只看该作者
hbl_cn 发表于 2013-7-9 17:18
I2C master模式延时长跟波形不对有啥关系,不是有SCL控制着同步嘛

比如收数据时:
      SCL_L;
      I2C_delay();
      SCL_H;
      I2C_delay();
      if(SDA_read)
        ReceiveByte |= 0x01;
如果I2C_delay();时间过长,那和发送端就不同步了?

使用特权

评论回复
5
reille| | 2013-7-9 21:29 | 只看该作者
不想折腾就用方法2吧。
我在写eCos stm32 I2C驱动时,也是用GPIO模拟的。

另外还有一种方法就是remap!

使用特权

评论回复
6
kail77|  楼主 | 2013-7-10 10:10 | 只看该作者
我就是觉得GPIO模拟在复杂系统里,也存在问题。只有CPAL最高抢断中断优先级+DMA没问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

1

粉丝