从你前面的描述可以推知一个事实:你已经采用了物理上支持热插拔的器件,那就不会因热插拔行为本身导致器件的异常,只是因I2C主设备发出的通讯指令未获响应而导致软件死锁。而单向设备的情况完全不同,你不说就不要指望别人能自动获知你的条件和前提。 I2C接口本身不支持热插拔,其本质不是因为物理方面的原因而是因为通讯本身引起。热插拔先要通知主机从设备的接入,然后由主设备发起连接,I2C无此设计,故才需反复查询从设备的响应来判别热插拔行为的有无。单向通讯比较简单,但仍需侦测从设备的连接,这时当然不能靠响应而是得靠诸如电源监测、端口状态等手段辅助实现,然后才能发起通讯。当然,更简单的方法是不管是否存在从设备,主设备自己单独操作就是,但这样很容易出错,只适合特殊应用,USB端的固件程序也得因此修改配合。 正确的提问非常重要,前提、条件等要给足,否则将徒然浪费时间。 |