搜索
bottom↓
回复: 25

发一个完全独立的stm32硬件中断i2c驱动

[复制链接]

出0入0汤圆

发表于 2014-9-28 17:42:11 | 显示全部楼层 |阅读模式
本帖最后由 seewolf 于 2014-9-28 17:56 编辑

前段时间调一个i2c传感器,被迫需要用stm32硬件i2c通信,stm32的硬件i2c是出了名的不好用,所以之前一直避开不用,这次没办法了遂深入研究了下。
先是在论坛里搜了下没找到完全独立的驱动,只有一些模拟的或者用于EEPROM的硬件i2c驱动,在这里把我写的独立的i2c驱动分享给大家,希望能对大家有所帮助!
驱动里单个字节读写用的是硬件i2c,多个字节读写用的是DMA,我在裸机程序和RT-thread上都调试过,应该没有大bug了,但冗余比较多,格式也不太规范,需进一步优化,这个就靠大家自己来了,嘿嘿~(在这里还要感谢“lj2505”分享的用于EEPROM的i2c驱动,给了我很大启发。)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2014-9-28 18:04:19 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-9-28 18:12:42 | 显示全部楼层
硬件的为什么这么难弄那

出0入0汤圆

发表于 2014-9-28 20:28:13 | 显示全部楼层
楼主可以把实现思路说一下,大家讨论

出0入0汤圆

发表于 2014-9-28 21:47:06 来自手机 | 显示全部楼层
仔细看看源码

出0入0汤圆

发表于 2014-9-28 23:43:25 | 显示全部楼层
我一直纳闷,为什么STM32F103的硬件IIC搞的这么复杂,莫非就是为了躲开NXP的专利?  目前在用软件模拟的IIC,谢谢楼主,留个记号,忙完项目看一下··

出0入0汤圆

 楼主| 发表于 2014-9-29 00:07:26 | 显示全部楼层
zhouq3132 发表于 2014-9-28 20:28
楼主可以把实现思路说一下,大家讨论

其实就是严格按照手册写的,都在代码里拉,呵呵~

出0入0汤圆

发表于 2014-9-29 00:08:18 | 显示全部楼层
谢谢分享

出0入0汤圆

 楼主| 发表于 2014-9-29 00:08:59 | 显示全部楼层
linxiaoutziCCCP 发表于 2014-9-28 23:43
我一直纳闷,为什么STM32F103的硬件IIC搞的这么复杂,莫非就是为了躲开NXP的专利?  目前在用软件模拟的IIC ...

呵呵~感觉软件模拟的i2c用在一般程序还好,用在操作系统上就不行了,效率太低了

出0入0汤圆

 楼主| 发表于 2014-9-29 00:10:57 | 显示全部楼层
linxiaoutziCCCP 发表于 2014-9-28 23:43
我一直纳闷,为什么STM32F103的硬件IIC搞的这么复杂,莫非就是为了躲开NXP的专利?  目前在用软件模拟的IIC ...

据说他们自己好像都承认有漏洞了,于是出了各种文档和方法来解决,结果就是越弄越麻烦,呵呵~

出0入0汤圆

发表于 2014-9-29 16:09:12 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-10-18 21:11:48 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2014-10-19 11:04:25 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2014-10-19 11:14:02 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-11-4 09:56:05 | 显示全部楼层
谢谢LZ分享...

出0入0汤圆

发表于 2014-11-4 09:58:57 | 显示全部楼层
独立 stm32 硬件 中断 i2c 驱动

出0入0汤圆

发表于 2014-11-4 10:02:04 | 显示全部楼层
谢谢分享,以后用到可以参考一下了!

出0入0汤圆

发表于 2014-11-4 11:45:47 | 显示全部楼层
收藏了,谢谢分享

出425入0汤圆

发表于 2015-5-20 17:34:04 | 显示全部楼层
被I2C折腾几天了。看了你的程序,非常的规范。中断不设定为最高优先级,可以吗?因为我其他的中断也要这个最高的优先级。还有,对总线锁死的解决我还没弄明白。

出0入0汤圆

 楼主| 发表于 2015-5-20 20:32:51 | 显示全部楼层
guolun 发表于 2015-5-20 17:34
被I2C折腾几天了。看了你的程序,非常的规范。中断不设定为最高优先级,可以吗?因为我其他的中断也要这个 ...

最好设置为最高优先级,否则还是容易出错,具体的还是需要你自己来权衡,优先级设低一点也不见得一定会出问题。

出0入0汤圆

发表于 2015-5-21 23:28:14 | 显示全部楼层
STM32学习中

出0入0汤圆

发表于 2016-6-9 17:19:47 | 显示全部楼层
是i2c 从机的代码 感谢楼主

出0入0汤圆

发表于 2016-6-10 14:41:02 来自手机 | 显示全部楼层
完全独立的是指什么

出0入0汤圆

 楼主| 发表于 2016-6-11 22:34:29 | 显示全部楼层
lazyfans 发表于 2016-6-10 14:41
完全独立的是指什么

完全独立就是纯粹的驱动,可以直接移植的

出0入8汤圆

发表于 2016-6-21 16:17:02 | 显示全部楼层
谢谢前辈的IIC驱动,一直都是模拟。。有时间测试下!!

出0入0汤圆

发表于 2017-5-27 13:30:55 | 显示全部楼层
移植倒是挺方便的,不过用不起来,不知道还要注意哪里
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 14:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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