硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1038|回复: 7
收起左侧

[I2C] I2C库,为什么安富莱bsp使用的是阻塞delay的形式?

[复制链接]

5

主题

14

回帖

29

积分

新手上路

积分
29
QQ
发表于 2023-12-27 21:09:23 | 显示全部楼层 |阅读模式
我们领导说st的i2c支持有问题,大家都是自己实现的。

但是我很讨厌阻塞,想问问现在hal库的i2c结合中断搞I2C还是有问题吗?
回复

使用道具 举报

75

主题

684

回帖

909

积分

金牌会员

积分
909
发表于 2023-12-27 23:14:57 | 显示全部楼层
硬件IIC有问题是很久以前的事了,现在应该早就修复好了
回复

使用道具 举报

0

主题

11

回帖

11

积分

新手上路

积分
11
发表于 2023-12-28 08:05:00 | 显示全部楼层
我也想问,像I2C能不能用非阻塞的软件方式来实现
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2023-12-28 08:07:07 | 显示全部楼层
I2C从机不能用模拟,性能太差,而I2C主机,天生被模拟,有硬件主机无法比拟的优势,但也有缺点,就是楼主说的。

针对这个问题,前段时间出了个解决方案:

第9期ThreadX视频教程:自制个微秒分辨率任务调度实现方案(2023-10-11)
https://www.armbbs.cn/forum.php? ... d=121371&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

5

主题

14

回帖

29

积分

新手上路

积分
29
QQ
 楼主| 发表于 2023-12-28 20:54:44 | 显示全部楼层
eric2013 发表于 2023-12-28 08:07
I2C从机不能用模拟,性能太差,而I2C主机,天生被模拟,有硬件主机无法比拟的优势,但也有缺点,就是楼主说 ...

感谢硬汉大哥!看了一下应该是可以的,改天改进安富莱的BSP试试。今天尝试了一下threadX的module使用threadX全家桶的其他功能,看起来如果用threadXModules,threadX的其他组件(例如GUIX、FileX)都是必须在Manager上移植?module里面实际上只能做逻辑处理了?
回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2024-1-2 18:58:40 | 显示全部楼层
在部分型号用DMA的方式还没有发现问题
回复

使用道具 举报

0

主题

11

回帖

11

积分

新手上路

积分
11
发表于 2024-2-2 16:39:17 | 显示全部楼层
eric2013 发表于 2023-12-28 08:07
I2C从机不能用模拟,性能太差,而I2C主机,天生被模拟,有硬件主机无法比拟的优势,但也有缺点,就是楼主说 ...

不知道硬汉哥有没有做过测试,我把微秒分辨率的延迟,设置到2us左右,也就是I2C 400K左右的速率。定时器中断回调中信号量的Give已经换成了GiveISR,并且优先级配置成了较低,在FreeRTOS管理中,FreeRTOS中该线程会被一直阻塞。把时间稍微拉长到5us或100us,这个阻塞的问题就解决了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2024-2-3 08:18:47 | 显示全部楼层
Cloudczk 发表于 2024-2-2 16:39
不知道硬汉哥有没有做过测试,我把微秒分辨率的延迟,设置到2us左右,也就是I2C 400K左右的速率。定时器 ...

FreeRTOS的任务切换速度做到us级还是有压力的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 16:18 , Processed in 0.227805 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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