两个RFID RC522覆盆子PI 2 Windows IOT

问题描述 投票:0回答:2

如果我想通过SPI连接第二个rfid阅读器,我应该从主题RFID RC522 Raspberry PI 2 Windows IOT中改变什么?

我将第二个“ss线”连接到SPI_CE1_N引脚,将“复位线”连接到GPIO12引脚。

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

c# raspberry-pi2 iot windows-10-iot-core windowsiot
2个回答
0
投票

第一次初始化

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);

这适合我。我希望它对你有所帮助。


0
投票

最后我解决了这个问题。

谢谢你Rita Han的帮助。你的代码现在很棒。现在因为我有硬件问题。

我将设备连接为图片:

Connection RFID-RC522 to the Raspberry Pi.

连接示波器后注意到MISO总线的电压不正确。两个器件都将电压拉低到地。而不是3,3V只有1,24V。 (3,3V CMOS逻辑电平1的最小电压为2,4V)

One of the devices trying to transmit.

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

Solution - separation output.

结果:s,SV - Bf = 2,56V

Result - separation output.

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

我认为最终使用SN74HC125N会更好。

BTW:为什么不能通过属性更改SS引脚?

_spi.ConnectionSettings.ChipSelectLine = 1;
© www.soinside.com 2019 - 2024. All rights reserved.