使用GPIO_UsetInactive()和GPIO\u SetActive()直接控制I2C SDA引脚

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
2个职位/0个新职位
最后一篇文章
大举
离线
最后一次见到:2年前3周前
已加入:2018-01-29 01:08
使用GPIO_UsetInactive()和GPIO\u SetActive()直接控制I2C SDA引脚

我分别将I2C SDA和SCL线设置为I2C GPIO端口=0的GPIO引脚0和GPIO引脚1,定义为

#定义I2C_UGPIO_UPort GPIO\u端口\u 0

#定义I2C_USCL U引脚GPIO\u引脚1
#定义I2C_USDA U引脚GPIO\u引脚0

I2C操作均正常工作,当I2C不工作时SCL和SDA都高

我想能够手动拉SDA引脚低一段时间,然后在计时器过期后将其拉回高位,而不影响SCL线

我试着打电话
GPIO U SetInactive(I2C GPIO U端口,GPIO U引脚0);
为了降低SDA,然后启动计时器,在计时器回调函数中,我添加

GPIO U SetActive(I2C GPIO U端口,GPIO U引脚0);
把它拉回去

我在示波器上观察SDA,但它根本没有变化
时间段现在为3秒,但我需要它在我的最后一个程序中是40毫秒

如何手动更改SDA引脚的逻辑级别?

如果相关,则提供额外信息:我正在PRO开发委员会和
#定义CFG_u开发\u调试
da1458x配置\u basic.h中存在线路,
我还尝试添加#undefcfg\u开发调试,但仍然无法工作

如果我试图切换LED而不是SDA线,它工作正常
LED定义为
#elif HW\u配置\u PRO\u DK
#定义GPIO\u LED_UPort GPIO\u PORT\u 1
#定义GPIO\u LED_Upin GPIO\u PIN\u 0

关键词:
设备:
大举
离线
最后一次见到:2年前3周前
已加入:2018-01-29 01:08
这是通过改变来解决的

这是通过将SDA pin更改为通用GPIO类型来解决的

GPIO配置引脚(I2C GPIO U端口,I2C SDA U引脚,输出,PID U GPIO,false);

在此之后,可以手动将pin设置为0或1

要将其更改回I2C SDA,请再次调用GPIO\u ConfigurePin()函数

GPIO配置引脚(I2C GPIO U端口,I2C SDA U引脚,输出,PID_I2CU SDA,false);