コード例 #1
0
        public void BitBangSpiTest()
        {
            Console.WriteLine("Starting bit bang SPI functionality test...");

            byte[] MISO;

            List <byte> MOSI = new List <byte>();

            for (int i = 0; i < 1024; i++)
            {
                MOSI.Add((byte)(i & 0x7F));
            }

            Console.WriteLine("Testing bit bang SPI word length...");
            for (uint wordLen = 8; wordLen <= 512; wordLen += 8)
            {
                Console.WriteLine("Testing bit length of " + wordLen.ToString());
                /* Override SPI pins */
                FX3.BitBangSpiConfig = new BitBangSpiConfig(true);
                MISO = FX3.BitBangSpi(wordLen, 1, MOSI.ToArray(), 1000);
                Assert.AreEqual(Math.Ceiling(wordLen / 8.0), MISO.Count(), "ERROR: Invalid data count");
                for (int i = 0; i < MISO.Count(); i++)
                {
                    Assert.AreEqual(MOSI[i], MISO[i], "ERROR: Invalid echo data");
                }

                /* Override DIO3/4 pins */
                FX3.BitBangSpiConfig.MOSI = (FX3PinObject)FX3.DIO3;
                FX3.BitBangSpiConfig.MISO = (FX3PinObject)FX3.DIO4;
                MISO = FX3.BitBangSpi(wordLen, 1, MOSI.ToArray(), 1000);
                Assert.AreEqual(Math.Ceiling(wordLen / 8.0), MISO.Count(), "ERROR: Invalid data count");
                for (int i = 0; i < MISO.Count(); i++)
                {
                    Assert.AreEqual(MOSI[i], MISO[i], "ERROR: Invalid echo data");
                }
            }

            Console.WriteLine("Testing restore hardware SPI functionality...");
            FX3.RestoreHardwareSpi();
            TestSpiFunctionality();
        }