模拟I2C与SPI,适合新手参考
本帖最后由 laoshuhunya 于 2013-5-6 13:26 编辑范例工程在KEIL RVMDK471下编译,以器件SST25VF020和AT24C64为实例。
每个模块由三个文件组成:功能定义文件,模块配置文件,模块声明文件。
功能定义文件的扩展名为“.c”, 模块配置和声明文件的扩展名为“.h”。
模块配置文件根据具体应用修改,功能定义文件、模块声明文件无需修改。
例如:文件包中“I2C_Master_def_v6.0.c”为功能定义文件,“I2C_Config_v6.0. h”为模块配置文件,“I2C_dec_v6.0.h”为模块声明文件。
使用时,把功能定义文件添加到你的工程中,并且在要使用到本I2C或SPI模块的文件中包含模块配置和声明头文件即可。
模拟SPI总线:
(1) 支持0、1、2、3 所有四种总线工作模式
(2) 支持1~64位数据帧长度
(3) 可选MSB或LSB先发送
(4) 可选SS线的有效电平
(5) 总线时钟速率可调
(6) 严格符合SPI总线技术规范
(7) 模块代码经过测试验证和产品量产检验
模拟I2C总线:
(1) 支持总线竞争仲裁,尤其适用于多任务系统
(2) 支持7位和10位器件地址
(3) 支持多字节数据地址
(4) SCL超时时间可调
(5) SDA超时时间可调
(6) 总线时钟速率可调
(7) 完整的总线状态信息:正常、超时、竞争失败、器件地址无应答、数据地址无应答、重复方向码无应答、数据内容无应答、函数参数错误
(8) 严格符合I2C总线技术规范
(9) 模块代码经过测试验证和产品量产检验(I2C从机模块未测试)
修改原因:错别字。 晕,图片多了一个 下载来看看 很好的 可以参考下了 谢谢LZ@哈 补充说明:没有用ST的库,直接操作硬件寄存器
另:添加两个PDF
MDK471都用上了啊? 顶一下!!~
有用!谢谢! 不错,收了 楼主这个代码果然给力,我把它稍微修了两句,INA219就通了,找了很多代码都不能用,就楼主这个给力!! 标记一下 项LZ, 学习学习 JoshuaAstray 发表于 2013-7-27 21:19 static/image/common/back.gif
楼主这个代码果然给力,我把它稍微修了两句,INA219就通了,找了很多代码都不能用,就楼主这个给力!! ...
恭喜打通任督二脉。
俺最头疼看别人代码,你居然能轻易把这个I2C用起来,俺认为你比楼主给力! 标记一下 恩恩 学习了谢谢楼主{:smile:} 收藏了,谢谢!{:lol:} 学习{:smile:} 学习了,多谢 cool 很多年前申请了ST的开发板,最近才开始学习。惭愧! 多年前的帖子了,好吧,既然被挖出来了就更新下主贴内容。
本贴附件更适合多线程下使用,并且继承了虚拟世界实验室一贯的高稳定性和高可靠性。
如果使用了本程序但您的I2C接口访问仍然不正常,那一定是您的硬件或MCU配置问题。
感谢大佬,今天学习了大佬代码中的一些处理方法,受益良多
页:
[1]