- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STM32系列 IIC 使用总结
ŗŘő32 系列 ōōŇ 使用总结
初次使用时可能会遇到的问题
刚开始调试时,用示波器发现时钟线一直为高电平,而且程序停在了
/* ŘW S ō2Ň1 ʼnŚ5 PV */
P(!ō2ŇţŇʼnZ(ō2Ň1,
ō2ŇţʼnŚʼnŒŘţőŅŗŘʼnŖţőœňʼnţŗʼnŐʼnŇŘ));
原因:是因为ŊŗőŇ 模块和ō2Ň1 模块共用了Ŕņ7 引脚所以使得ō2Ň1 没有正常启动,
而且即使你没有用到ŊŗőŇ 只是打开了ŊŗőŇ 的时钟也会影响ō2Ň1 的启动。解决办法
是改用ō2Ň2 或者重定义ō2Ň 的时钟线和数据线到Ŕņ8、9 引脚;或者关掉ŊŗőŇ 的时
钟。
使用WQ32103ŚņŘ6 模拟2 的时候. 管脚配置成ŋŔōœţőSţœYţœň
固然,ŗŘő32 ō2Ň 硬件接口有设计不完善的地方,例如下面就是我从 ŗŘő32 最新的
ʼnVV W 中总结出的,关于ŗŘő32 ō2Ň 接口设计上的一些缺陷和如何避开这些
缺陷的推荐程序模型:
(1)把ō2Ň 的中断优先级提升到最高
(2)把发送多于2 个字节的发送与接收封装成利用 ňőŅ 收发的函数,而把对某ō2Ň 设
备接收和发送一个字节的函数单独封装为一个ŔœŐŐōŒŋ (轮询)函数。
(3)在寻址某一ō2Ň ňʼnŚōŇʼn 时要先ŇŌʼnŇŏ ō2Ň ņřŗ 是否ņřŗŝ,如果忙,则
等待指定时间,如果还是忙就说明ō2Ň ņřŗ 挂了(原因99.9%是由于我们的ō2Ň 通信
时序并不十分尊守ō2Ň 规约,或者我们所封装的ō2Ň 通信模块没有加上防守代码(出错恢
复代码)),这时要调用一个专门的用于通知 ō2Ň ņřŗ 上的所有Z,让他们结束当
前内部的工作,重新准备好(下雨了,收衣服啦)。如下面的我的ō2Ň 模块的ŊřŒ 切片:
该函数一定要用在主őŇř的启动模块上,因为ō2Ň总线在充当őWV的őŇř启动时,
ŗňŅ 和ŗŇŐ 有可能组合出刚好符合ō2Ň 规约的时序组合,比如一个开始位(ŗŘŅŖŘ
ŇœŒňōŘōœŒ),使得ō2Ň ņřŗ 立即当在那里(因为当主őŇř 真正需要发出一个ŗŘŅŖŘ
ŇœŒňōŘōœŒ 时,发现ō2Ň ņřŗ 正处于ņřŗ 状态,而根据ŗŘő32 手册的ŗŘŅŖŘ
ŇœŒňōŘōœŒ 说明可知,一个起始条件将会使得 ō2Ň ņřŗ 处于ņřŗŝ 状态, 下面的
ō2Ň2ţŊVţņY Y 的基本用法:
(注: ō2Ň2ţŊVţņYW ŊY 应放在线程中,而不是放在上图中的位置,这样会触发并
进入一个硬件错误处理向量中断中)
提示:摘自ŗŘő32 手册:
ō2Ň.ŗŖ1.ņ 0 位(ŗņ)ä ŗV (őWV QS)
ä ŗ ŗV SS V.
ä ŇPV ] WSV ] V ŗŖ1 VWV SPPS ]
V ňŖ VWV, SV ] VV Ŕʼn=0.
(4) 不要让ō2Ň 工作在88ŏŌ 的频率上,低于或者使用ŊWäQS(400ŏŌ)频
率,这是ŗŘő32 ō2Ň 真正的一个硬件ņřŋ(99.999%机率),但是也是可以编程避免
的。
(5)ŔVSVQQ ŒœŗŘŖʼnŘŇŌ=0 ō2ŇţŇŖ1 VWV.
这样也可避免一个ŗŘő32 ō2Ň 硬件设计的一个小ņřŋ(2。9。5节)
(6)大部分的őŇř 的硬件ō2Ň 接口的工作模式是中断(高端的会用ňőŅ)+状态机;
因此状态机的编程概念要熟悉
(7)ŗŘő32 ō2Ň 的硬件接口负责实现满足ō2Ň 总线的的规约,而我们(嵌入式编程开
发者)则是通过ō2Ň 控制寄存器和ō2Ň 的事件标志组合来启动状态机,然后让状态机按
照由ō2Ň ŗŖ1 和ŗŖ2 所组合志来的事件自动工作,并在发送或接收完成后通过ŊŐŅŋ
的方式或信号量的方式通知我们所写的读写函数,操作已经完成,或者在操作中出现了错误,
如最常见的ŅŊ 错误(Z 在第9位上没有拉低ŗňŅ 应答őWV。)
(8)ō2Ň ŗŖ1 和ŗŖ2 的功能分配(这是一个极易忽视的思考死角)
从ŗŘő32 手册的ō2Ň VWV QT 中可以看到, ō2Ň 的ŗŖ1,主要是反映
ō2Ň 通信的最基本的标志,要清除ŗŖ1 的某个标志可以直接清除,而ō2Ň 的ŗŖ2 即是辅
助ŗŖ1 的,他一般反映了ō2Ň 总一当前的工作状态,如ņřŗŝ,是主机模式还是从机模
式,等等。关于ŗŖ2 的很重要的一个编程模型是:要清除ŗŖ1 的某些指定的标志位时,
比如ŅňňŖ,先读ŗŖ1 然后再读ŗŖ2 将会清除掉已置位的ŅňňŖ。
(9)őWV 在操作WPZ Z 时要先和他握一下手是很好的防守编程模型
I2C
I
您可能关注的文档
- SMC CEU5 使用说明书.pdf
- SAACK锅炉SKVJ-M燃烧器调试注意事项_2010-11-21_A.pdf
- SMC流体阀综合介绍.pdf
- SMC气缸的选型方法.pdf
- SMC叶片型摆动气缸-CRB2系列.pdf
- SMT钢板制作规范.pdf
- Snoopy plus 62S Foot stand shrink issue tryout Report by Leeder_20130508.pdf
- SMT_FESTO气缸接近开关.pdf
- SMT Support Pin Tech 解决方案.pdf
- SolidWorks分模方法1—分割法.pdf
- 快消品私域电商用户行为洞察与分层运营策略指南.docx
- 2025年直播电商虚拟主播跨平台运营策略研究报告.docx
- 快消品私域电商用户社群运营策略与分层运营实践.docx
- 快消品私域电商用户社群运营策略与效果评估.docx
- 小学英语阅读教学人工智能辅助工具的创新与应用研究教学研究课题报告.docx
- 快消品私域电商用户留存与激活策略研究报告.docx
- 跨境电商物流智能化技术应用案例解析报告.docx
- 冬季45°倾斜角太阳能热水器集热效率优化实验与传热系数分析教学研究课题报告.docx
- 人工智能教育空间互动教学在信息技术学科中的应用研究教学研究课题报告.docx
- 思维导图在小学语文阅读教学中促进学生思维发展的研究教学研究课题报告.docx
文档评论(0)