FreeRTOS上用IO模拟IIC

[复制链接]
3318|7
 楼主| 1002689898 发表于 2019-9-26 17:12 | 显示全部楼层 |阅读模式
如图,这次项目准备用STM32+FreeRTOS,USART和SPI都已经调通了,IIC还是想用IO口模拟,这样觉得心里踏实,目前RTOS切换任务的实际是1ms,会不会影响到IO模拟IIC通信呢,如果影响了,有什么好的办法解决这样的问题,各位好心的哥哥姐姐们,给小弟一点指导哦。
caoenq 发表于 2019-9-27 08:55 | 显示全部楼层
可以使用硬件IIC.
18990194628 发表于 2019-9-27 09:04 | 显示全部楼层
i2c如果在RTOS中使用软件模拟的方法,延时部分必定是us级,必然不能用RTOS的系统延时,必然会造成系统阻塞,不过只要i2c数据交互不太多,倒不影响什么,数据交互大的情况下会影响系统响应速度
811909 发表于 2019-9-27 11:21 | 显示全部楼层
放心大胆的用吧,眉毛的影响,我试过FreeRTOS跑100us切一次任务,一样跑的很正常,没任何问题
lihui567 发表于 2019-9-27 12:50 | 显示全部楼层
这个iic通讯的延时可以把系统延时改小一点,对程序影响不大,可以的
bear1 发表于 2019-9-29 10:25 | 显示全部楼层
嗯,放心大胆的用,绝对没问题,选FreeRTOS就对了。
dld2 发表于 2019-9-29 15:11 | 显示全部楼层
方法估计是有的,但是用RTOS和IO模拟时序这两个事情本质上有矛盾,不提倡
R2D2 发表于 2019-9-29 19:53 | 显示全部楼层
几种方案吧,最老的STM32F1系列的iic问题是最严重的,有两种解决方案:
1)如果iic使用非常不频繁,比如上电读取上次数据,掉电前保存数据到24Cxx里面,可以用软件模拟,不要考虑影响RTOS问题。
2)如果iic是系统最关键的使用最频繁的peripheral,那么可以给最高优先级中断,或者给一条DMA通道,总之iic操作的时候,没有别的peripherals来打扰,那么stm32的硬件iic还是非常可靠的。

对于后来的stm32f4、f0系列,据说已经改进了iic,问题能少一些,你可以到st的官方网站找errata。

当年被stm32f103的硬件iic和rtc折磨坏了,以至于现在养成了先看errata再看datasheet,最后看reference manual的习惯。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

120

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部