找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

动态设置软件I2C引脚速度变慢,请教大神有没有更好的方法

查看数: 2653 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-9-28 21:22

正文摘要:

由于项目需要跟多个I2C从机通讯,从机地址相同又无法修改,只能将从机接到不同的IO 所以我写了如下代码来动态设置I2C引脚 #include <STC32G.H> #define        GPIO_PIN ...

回复

ID:1088898 发表于 2023-10-1 12:03
感谢大家的回复,问题已解决,感谢 lkc8210
ID:1088898 发表于 2023-10-1 12:03
lkc8210 发表于 2023-9-29 09:10
直接用GPIO_WritePin/GPIO_ReadPin
不要再嵌套

感谢 lkc8210
试了不嵌套速度也是不理想,用宏定义勉强可以达到,测试了12小时,读取I2C数据都正常,感谢!
ID:624769 发表于 2023-9-30 16:13
去掉,Delay5us();
ID:384109 发表于 2023-9-29 16:01
直接对引脚操作,不要用库函数
ID:1094811 发表于 2023-9-29 14:30
调用函数是需要指令时间的,给IO口值也是需要指令时间,直接给地址给值是最快的。
ID:771630 发表于 2023-9-29 13:49
硬件IIC +模拟开关或者PCA954x,1MHz/400KHz的速度,比软件IIC快了不知道多少倍
ID:161164 发表于 2023-9-29 09:10
直接用GPIO_WritePin/GPIO_ReadPin
不要再嵌套

想再快可以用宏定义

  1. #define GPIO_W(x,y) (y)?(P2|=(1<<x)):(P2&=~(1<<x))
  2. #define GPIO_R(x) (bit)(P2&(1<<x))
复制代码

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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