正在编写 TLV493D 磁编码器驱动。这款编码器有特殊机制,当有新数据可供读取时,它会主动拉低 I2C 总线的 SCL 时钟线;单片机检测到该电平后,需要发起一次 I2C 读取事务,读取数据并清除中断状态。
但是正常 I2C 通信产生的 SCL 时钟脉冲不能重复触发外部中断,所以我需要做特殊处理来适配该硬件逻辑。但我不清楚 STM32F4 该怎么配置、该做哪些操作。
目前我已经通过 CubeMX 完成 I2C1 初始化,上电复位后可以正常和 TLV493D 通信、配置寄存器。但我把 SCL 引脚重新配置为 GPIO 外部中断来接收编码器的中断信号时,I2C 总线直接失效。
我现在疑惑的方案是:来回切换引脚功能,在 I2C 复用功能和 GPIO 外部中断模式之间切换,不知道这种方式是否是标准、合理的实现思路。
单个引脚能否同时作为 I2C 的 SCL 时钟线,又能在线路被拉低时触发外部中断?还是说我来回切换引脚功能的思路才是正确方法?
|
评论
|