在GPIO中断上向SPI写入/读取SPI失败,出现OSError:[Errno 9]错误的文件描述符

我正在运行带有Raspberry Pi上的中断引脚的NFC读取器,并且编写了脚本使其运行。到目前为止,它工作得很好,但在某些情况下,SPI xfer会因OSError: [Errno 9] Bad file descriptor

而崩溃

当我收到GPIO引脚的中断时,整个SPI部分就会发生-这可能是个问题吗?我知道代码不应在中断上做太多,这可能会导致崩溃。

在这里共享的代码有点过多,但是我将Adafruit库https://github.com/adafruit/Adafruit_Python_PN532与PN532芯片配合使用-我知道它已被弃用,但  与C实现的区别很小。我正在运行pn532.read_passive_target(timeout=0.2)从该NFC芯片读取UID,并使其扫描NFC卡。

效果很好,直到我经常这样做。为了进行测试,我将卡反复一遍又一遍地拿在读卡器上。大约5到10次后,它崩溃了。

任何想法如何解决?很抱歉,该错误描述不正确。

BlueChiang 回答:在GPIO中断上向SPI写入/读取SPI失败,出现OSError:[Errno 9]错误的文件描述符

我将代码重构为在中断过程中不执行任何SPI工作。现在,Interrupt仅处理状态,而没有其他任何处理,然后主线程检查状态并进行处理。因此,我无法再次重现该错误。

注意:请勿在中断过程回调中使用SPI,而应使用状态机或python计划。

本文链接:https://www.f2er.com/3166129.html

大家都在问