STM32不支持的硬件件I2C到底坑不坑

传说中最难调的STM32 I2C模块终于调试成功了【stm32吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:28,713贴子:
传说中最难调的STM32 I2C模块终于调试成功了收藏
历经坎坷,终于调通了stm32d的I2C模块,最高速率到450K,无论硬件中断还是DMA收发数据都完美成功,无需将中断级别置最高(失去应用价值)。完全应用寄存器操作,抛弃stm软件库,直接底层操作。有需要的加我QQ:
LPC 32位ARM MCU提供出色的易用性,设计灵活性和先进的集成.LPC继续采用其新一代LPC800和LPC54000系列转变MCU现状,致力于解决当今物联网设计挑战.
自己的板凳自己坐,郑重申告,pcb板自己绘制,本人亲力亲为,绝无广告之嫌,只求抛砖引玉,互励互勉
听起来感觉好牛
————相识是缘,纵然只是过客,却难得相知相识……惜缘,惜每一次的邂逅……
顶一个,刚接触STM32,还不是很熟悉
所谓的底层操作是啥意思,直接库函数么还是用的单片机自带硬件?
硬件iic?这个可以有
同样在学stm32.求共勉
是运用的中断还是查询方式啊?
楼主求发代码啊,我调了很长时间都没调通!!!
楼主啊 !   我也是在自己做板子。。。     我在调EEPROM呢   最近也在捣鼓IIC。    可以跟你交流下哈!
干嘛不 直接发代码
还要加q?直接公开探讨多好
i2c应该还好。楼主有空把usb搞定,我就加你。。。。
硬件I2C和软件I2C都是怎么定义的了?有什么区别吗?初学,还请楼主耐心解答!
果然还是要靠这个办法来解决。用内置库连大神都要晕哭
登录百度帐号为什么说stm32 的i2c鸡肋_百度知道
为什么说stm32 的i2c鸡肋
我有更好的答案
STM32就挂了。CPU要处理很多不同的任务,一旦其他任务占用了CPUSTM32的I2C的Bug:因为ack信号时间很短暂。官网不承认这个Bug,给出的解决方案是,一旦错过了这个短暂的ACK信号,ACK就容易被错过
采纳率:60%
为您推荐:
其他类似问题
stm32的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。关于STM32-I2C不合理看法
1. 关于 SCL时钟设置的处理。
在软件模拟年代,SCL是50%的PWM, 就是说 SCL低周期:SCL 高周期=1:1,
这是我们一贯的认识与做法。
而实在ATMEL与NXP的 ARM 中的也是如此对待。只不过ATMEL叫TWI.
由于ATMEL公司本身也生产I2C的FLASH和SPI FLASH ; 我们有理由
相信这种1:1是可行可靠的。
我们知道I2C是NXP(菲利普)的专利 ,它应该是权威了,
但我们仔细看NXP的ARM7, 它的I2C 时钟高、低周期 是可变的。
我们可以设1:1,也可以设1:2 等等。虽然NXP 手册上是使用1:1的设计。
简单的说: SCL时钟高低周期比例定了下来(1:1),那么周期越长
I2C的速度就越慢。
I2C的时钟是48MHZ,要I2C工作200KHZ, 我们只要 把计算出的周期
写入I2C寄存器就可以了。
方法: 48,000,000/(200,000*2)=120;
也就是说把时钟分频【120】,I2C 就可以工作200KHZ了。
而ST公司的名堂就来了,它来了什么 保准模式,快速模式,
周期比例有什么 1:2 、 16:9 。
还搞了个SCL时钟最大上升时间,它也分模式,STM32的I2C设置中
就要输入这项内容。
而ST公司确实是把简单的问题复杂化了。
2。关于状态位的查询与清除
这个事实上是很简单,但说起来比较麻烦。
在I2C协议中,我们都要根据标志位来判断分析I2C上发生的事情。
例如START发送完毕了,数据发送完毕了等等。
ATMEL的TWI可以说 非常精简。
程序只要关心的标志:
TXRDY: 发送保持寄存器就绪
RXRDY: 接收保持寄存器就绪
TXCOMP: 传输完成
NXP的I2C可以说 非常高效。它的每个状态标志位都有相应的清标志位 ,
这样当I2C总线上发生的事情触发对应的标志置位后,我们可以人为的清除它。
而且它的标志位很统一,用一个【中断事件标志位】来表示,详细内容可以访问
内容寄存器。
ATMEL公司和NXP公司的I2C都只有【一个】 状态寄存器。
而ST公司呢,STM32要操作【两个】状态寄存器,判断这两个寄存器的标志位。
标志名目繁多,不同事件要查询不同标志位;也没有相应的清除标志位。
这也是我们最担心的,我们不知到底这个标志是新的事件产生的还是老的标志没被清除。
虽然STM32告诉了我们每个标志的清除方法。
原文链接:
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点21ic官方微信-->
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU
请完成以下验证码
STM32有硬件IIC,为什么很多应用,还要模拟IIC?
高级技术员, 积分 814, 距离下一级还需 186 积分
高级技术员, 积分 814, 距离下一级还需 186 积分
高级技术员, 积分 814, 距离下一级还需 186 积分
高级技术员, 积分 814, 距离下一级还需 186 积分
看到很多STM32应用,使用I2C接口,明明STM32有硬件I2C,但不知为什么这些应用还要用GPIO来模拟I2C。这是为什么呢?
实习生, 积分 35, 距离下一级还需 15 积分
实习生, 积分 35, 距离下一级还需 15 积分
实习生, 积分 35, 距离下一级还需 15 积分
实习生, 积分 35, 距离下一级还需 15 积分
那个硬件IIC是有BUG的 所以大家都虚拟IIC
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
实习生, 积分 21, 距离下一级还需 29 积分
那个硬件IIC是有BUG的 所以大家都虚拟IIC
楼上能分享下他的BUG在哪里不?&&我现在就准备用硬件IIC,但是一直调试不通
高级技术员, 积分 726, 距离下一级还需 274 积分
高级技术员, 积分 726, 距离下一级还需 274 积分
高级技术员, 积分 726, 距离下一级还需 274 积分
高级技术员, 积分 726, 距离下一级还需 274 积分
虚拟I2C更好移植性,不同的芯片未必 有 或者 有那么多I2C 可以供开发者使用
一般情况,如果一直用着一块芯片,建议就用寄存器的I2C.
初级技术员, 积分 97, 距离下一级还需 3 积分
初级技术员, 积分 97, 距离下一级还需 3 积分
初级技术员, 积分 97, 距离下一级还需 3 积分
初级技术员, 积分 97, 距离下一级还需 3 积分
本帖最后由 神的兄弟 于
15:45 编辑
并不是IIC硬件有问题,是ST提供的库函数在设置IIC的API函数中出现了错误而且模拟的IIC同样很好用也有很多源代码,就不用再去改库函数里的BUG了
所以用模拟IIC的多
高级技术员, 积分 559, 距离下一级还需 441 积分
高级技术员, 积分 559, 距离下一级还需 441 积分
高级技术员, 积分 559, 距离下一级还需 441 积分
高级技术员, 积分 559, 距离下一级还需 441 积分
我也想知道BUG在哪里?这么多人都说BUG,难道ST不会知道么?到底有没有改呢?如果没有改肯定有他的道理呀。我HW,没配过IIC的程序。
中级技术员, 积分 183, 距离下一级还需 117 积分
中级技术员, 积分 183, 距离下一级还需 117 积分
中级技术员, 积分 183, 距离下一级还需 117 积分
中级技术员, 积分 183, 距离下一级还需 117 积分
ST为了防止侵权,把硬件IIC整得有点复杂,还有BUG
实习生, 积分 38, 距离下一级还需 12 积分
实习生, 积分 38, 距离下一级还需 12 积分
实习生, 积分 38, 距离下一级还需 12 积分
实习生, 积分 38, 距离下一级还需 12 积分
我的系统里有几个芯片是IIC接口,刚开始用官方的库函数也花了挺长时间调试,好不容易调通了,可是待正式小批量使用时,出现了偶尔死机的情况,后来断点查看,是卡在了IIC处理上,具体在哪里也说不清楚。于是花了段时间,用模拟IIC接口方式,程序基本就稳定了。我的理解是这样的:1.硬件IIC的时序不能出差错,如果你在读写IIC时,此时若正好碰上两根线上有了干扰,时序就不对了,它等不到回信也就卡在了哪里;2.模拟IIC即使出了干扰,也只是此时读写出错,数据都不出来或写不进去,但程序还会继续运行,待下次轮到时再读写,最大的好处是不影响整个程序运行。3.至于运行时间,应该比硬件IIC要慢(慢多少我也没测过),但是慢这点时间,基本对程序没什么影响。
资深工程师, 积分 10134, 距离下一级还需 9866 积分
资深工程师, 积分 10134, 距离下一级还需 9866 积分
资深工程师, 积分 10134, 距离下一级还需 9866 积分
资深工程师, 积分 10134, 距离下一级还需 9866 积分
资深技术员, 积分 499, 距离下一级还需 1 积分
资深技术员, 积分 499, 距离下一级还需 1 积分
资深技术员, 积分 499, 距离下一级还需 1 积分
资深技术员, 积分 499, 距离下一级还需 1 积分
我的系统里有几个芯片是IIC接口,刚开始用官方的库函数也花了挺长时间调试,好不容易调通了,可是待正式小 ...
受教了 谢谢 大神
实习生, 积分 38, 距离下一级还需 12 积分
实习生, 积分 38, 距离下一级还需 12 积分
实习生, 积分 38, 距离下一级还需 12 积分
实习生, 积分 38, 距离下一级还需 12 积分
本帖最后由 casn 于
21:15 编辑
再补充一下,为什么会卡死,硬件IIC中程序要等接口芯片的应答电平,等不到就死等,所以会卡死(估计未加超时处理所致),模拟IIC中的等待电平是cpu自己产生的,错过了就错过了,下次再来。如果说移植性,那完全在你的程序是否写得好了,和接口形式没关系。
资深技术员, 积分 377, 距离下一级还需 123 积分
资深技术员, 积分 377, 距离下一级还需 123 积分
资深技术员, 积分 377, 距离下一级还需 123 积分
资深技术员, 积分 377, 距离下一级还需 123 积分
主端加超时处理就可以了
资深技术员, 积分 377, 距离下一级还需 123 积分
资深技术员, 积分 377, 距离下一级还需 123 积分
资深技术员, 积分 377, 距离下一级还需 123 积分
资深技术员, 积分 377, 距离下一级还需 123 积分
http://bbs.21ic.com/forum.php?mod=viewthread&tid=1218016&mobile=2
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
IIC的硬件没有问题,而是IIC的库函数存在BUG,建议你用模拟的IIC;需要的话,我有IIC的例程发你看看。
初级技术员, 积分 90, 距离下一级还需 10 积分
初级技术员, 积分 90, 距离下一级还需 10 积分
初级技术员, 积分 90, 距离下一级还需 10 积分
初级技术员, 积分 90, 距离下一级还需 10 积分
IIC的硬件没有问题,而是IIC的库函数存在BUG,建议你用模拟的IIC;需要的话,我有IIC的例程发你看看。 ...
你是STM32硬件IIC的例程?
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
你是STM32硬件IIC的例程?
没太明白“你是STM32硬件IIC的例程?”什么意思?
实习生, 积分 18, 距离下一级还需 32 积分
实习生, 积分 18, 距离下一级还需 32 积分
实习生, 积分 18, 距离下一级还需 32 积分
实习生, 积分 18, 距离下一级还需 32 积分
IIC的硬件没有问题,而是IIC的库函数存在BUG,建议你用模拟的IIC;需要的话,我有IIC的例程发你看看。 ...
能发个例程给我吗?
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
能发个例程给我吗?
可以,你把邮箱给我。
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
高级技术员, 积分 945, 距离下一级还需 55 积分
能发个例程给我吗?
可以,你把邮箱给我。
助理工程师, 积分 1936, 距离下一级还需 64 积分
助理工程师, 积分 1936, 距离下一级还需 64 积分
助理工程师, 积分 1936, 距离下一级还需 64 积分
助理工程师, 积分 1936, 距离下一级还需 64 积分
模拟的时序更好控制 也更方便移植&&
不同单片机&&也就改改io配置&&还有那个delay
扫描二维码,随时随地手机跟帖
希望之星奖章
等级类勋章
技术新星奖章
人才类勋章
时间类勋章
甘甜之泉水
发帖类勋章
时间类勋章
涓涓之细流
发帖类勋章
技术奇才奖章
人才类勋章
时间类勋章
欢快之小溪
发帖类勋章
社区建设奖章
等级类勋章
您需要登录后才可以回帖44被浏览8,477分享邀请回答51 条评论分享收藏感谢收起1添加评论分享收藏感谢收起

我要回帖

更多关于 计算机的硬件 的文章

 

随机推荐