树莓派使用RC522 RFID设备时SimpleMFRC522.write方法无法正常工作的技术问询
排查RC522 RFID写入无响应的问题
我之前折腾树莓派RC522的时候也碰到过一模一样的情况,结合你的代码和错误信息,咱们从最常见的原因开始排查:
1. 先确认硬件连接与SPI配置
这是最容易踩坑的点:
- 引脚对应是否正确:RC522的SDA(CS)、SCK、MOSI、MISO必须对应树莓派的SPI引脚(默认是SPI0的引脚:SDA=GPIO8,SCK=GPIO11,MOSI=GPIO10,MISO=GPIO9),别把SDA和I2C的SDA搞混了!另外电源一定要接3.3V,接5V大概率会烧模块。
- SPI是否启用:打开终端输入
sudo raspi-config,进入「Interface Options」→「SPI」,确认已经启用,然后重启树莓派。 - SPI设备是否正常识别:重启后输入
ls /dev/spi*,如果能看到/dev/spidev0.0和/dev/spidev0.1,说明SPI配置没问题;如果看不到,要么是硬件没接对,要么是SPI没开。
2. 检查运行权限
访问SPI设备需要root权限,普通用户运行脚本可能会因为权限不足导致无法和模块通信。试试用sudo python3 Write.py来运行你的写入脚本,看是否有变化。
3. 测试读取功能,定位问题范围
先写个简单的读取脚本测试模块是否能正常检测标签:
#!/usr/bin/env python import RPi.GPIO as GPIO from mfrc522 import SimpleMFRC522 reader = SimpleMFRC522() try: print("Hold a tag near the reader") id, text = reader.read() print(f"ID: {id}") print(f"Text: {text}") finally: GPIO.cleanup()
- 如果读取也没反应,那基本可以确定是硬件连接或者SPI配置的问题;
- 如果读取能正常获取ID和内容,那问题可能出在标签本身(比如标签是不可写入的类型,或者被锁定了),RC522只支持MIFARE Classic 1K/4K标签,确认你的标签是这个类型。
4. 排查引脚冲突
如果你的树莓派还接了其他硬件(比如I2C设备、OLED屏幕等),检查是否有引脚和SPI冲突的情况,暂时断开其他设备,只保留RC522测试。
关于错误信息的说明
你看到的KeyboardInterrupt只是因为你手动中断了卡住的程序,核心问题是程序卡在reader.write()里——它一直在等待模块检测到标签,但模块根本没反馈,所以本质是模块和树莓派之间的通信没建立起来。
先从上面的步骤一步步排查,大概率能解决问题!
内容的提问来源于stack exchange,提问作者Joramre
相关产品推荐
相关产品推荐

