STM32F030 I2C 从模式中断编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shjhuang/article/details/83990177

第一次用I2C的从模式,之前用的是主模式,用的IO模拟的,在很多设备都用上了,没什么问题。在使用I2C从模式之前,也在网上看到很多人说这个是坑。自己花了几天的时间,终于跳过了这个坑,再次总结下:

1. 最困难的地方:因为需要两个平台对接,主端用的是LINUX系统,芯片是TI335X,从端是STM32F030,我两端的程序都没写过,所以出现问题了,无法判定是哪一边的问题,这个很痛苦。

2. 例子。虽然“拿来主义”不太厚道”,但是站在巨人的肩膀上,往往是最快的。

1) STM32F030的代码:http://www.openedv.com/forum.php?mod=attachment&aid=NDczMzV8N2FkMWE1NWZ8MTU0MTUwMjI3MnwwfDY0NTIy

2)Linux的代码:http://blog.sina.com.cn/s/blog_13087b7fa0102wcyg.html

3. 实际上STM32F030写的已经很好了,只是我在调试过程中,总是huiy怀疑这怀疑那的,改了很多代码,做了很多打印信息,实际上证明我的怀疑都是错的。

4. Linux才是很大的坑,毕竟我很少在Linux下编程。

  1)ioctl返回的是成功失败的标志位,而我一开始以为是返回成功的字节数,这里花了半天时间,老是返回1,实际上就是成功的,而我认为应该范围我需要的长度。

2) 在读、写同时操作的时候,必须先读后写。我在调试的时候,先调试写的代码,是OK的,在调试度的代码,也是OK,最后合并的时候,也是OK。但是发现一断电重开机就不行,折腾几下右可以了。最后把读放在写前面就没在出现异常了。

以上,做个记录。

猜你喜欢

转载自blog.csdn.net/shjhuang/article/details/83990177