两个 RFID RC522 Raspberry PI 2 Windows 物联网

Two RFID RC522 Raspberry PI 2 Windows IOT

如果我想通过 SPI 连接第二个 rfid reader,我应该在主题 的 class 中更改什么?

我将第二个 "ss line" 连接到 SPI_CE1_N 引脚,将 "reset line" 连接到 GPIO12 引脚。

我在 class Mfrc522 中添加了一个构造函数,我使用 SPI_CONTROLLER_NAME、SPI_CHIP_SELECT_LINE、RESET_PIN 作为参数但没有成功。

第一次初始化

public async Task InitIO()
{
    ...
    ...

    try
    {
        settings = new SpiConnectionSettings(SPI_CHIP_SELECT_LINE);
        settings.ClockFrequency = 1000000;
        settings.Mode = SpiMode.Mode0;

        String spiDeviceSelector = SpiDevice.GetDeviceSelector();
        IReadOnlyList<DeviceInformation> devices = await DeviceInformation.FindAllAsync(spiDeviceSelector);

        _spi = await SpiDevice.FromIdAsync(devices[0].Id, settings);

    }
    catch (Exception ex)
    {
        throw new Exception("SPI Initialization Failed", ex);
    }

    ...
    ...
}

第二次初始化:

public async Task ReInitSpi()
{
    _spi.Dispose(); //Here is important.

    try
    {
        if (settings.ChipSelectLine == 0)
        {
            settings = new SpiConnectionSettings(1); //CS1
        }
        else
        {
            settings = new SpiConnectionSettings(SPI_CHIP_SELECT_LINE); //CS0
        }

        settings.ClockFrequency = 1000000;
        settings.Mode = SpiMode.Mode0;

        String spiDeviceSelector = SpiDevice.GetDeviceSelector();
        IReadOnlyList<DeviceInformation> devices = await DeviceInformation.FindAllAsync(spiDeviceSelector);

        _spi = await SpiDevice.FromIdAsync(devices[0].Id, settings);

    }
    /* If initialization fails, display the exception and stop running */
    catch (Exception ex)
    {
        throw new Exception("SPI Initialization Failed", ex);
    }

}

每次使用时,例如,这样做:

    await mfrc.ReInitSpi();

    var writeBuffer = new byte[] { 0x55, 0xaa };

    mfrc._spi.Write(writeBuffer);

这对我有用。希望对你有所帮助。

终于解决了问题

感谢 Rita Han 的帮助。您的代码现在运行良好。现在因为我有硬件问题。

我连接的设备如图:

连接示波器后发现MISO总线电压不正确。两种设备都将电压拉低至地。而不是 3,3V 只是 1,24V。 (3,3V CMOS 逻辑电平 1 的最小电压为 2,4V)

为了快速测试,我使用了两个二极管(用于分离输出)和电阻器(用于加速下降沿)。

结果:3.3V - Vf = 2.56V

现在两个设备都运行良好。

我觉得最终还是用SN74HC125N比较好

顺便说一句:为什么不能通过属性更改SS引脚?

_spi.ConnectionSettings.ChipSelectLine = 1;