我分别将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
关键词:
设备:
这是通过将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);