void SpiDeviceTest::testMultipleTransmissions() { test::Transmission transmissions[] = { test::Transmission(4, RX_DATA(1,2,3,4), TX_DATA(4,3,2,1)), test::Transmission(2, RX_DATA(5, 6), TX_DATA(100, 101)), }; test::SpiDevice device; device.start(transmissions, ARRAY_SIZE(transmissions), __LINE__, false); TEST_ASSERT_FALSE(device.isSuccessful()); device.select(); TEST_ASSERT_EQUALS(device.write(1), 4); TEST_ASSERT_EQUALS(device.write(2), 3); TEST_ASSERT_EQUALS(device.write(3), 2); TEST_ASSERT_EQUALS(device.write(4), 1); device.deselect(); device.select(); TEST_ASSERT_EQUALS(device.write(5), 100); TEST_ASSERT_EQUALS(device.write(6), 101); device.deselect(); TEST_ASSERT_TRUE(device.isSuccessful()); }
// ---------------------------------------------------------------------------- void Ad7280aTest::testAllChannelRead() { test::Transmission transmissionsInitialize[] = { test::Transmission(4, RX_DATA(0x03,0x80,0x11,0xCA), TX_DATA(0x00,0x00,0x00,0x00)), test::Transmission(4, RX_DATA(0x01,0xB5,0x14,0xEA), TX_DATA(0x00,0x00,0x00,0x00)), test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x00,0x03,0x27,0x24)), test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x00,0x86,0x47,0x34)), test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x01,0x09,0x67,0x84)), test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x01,0x8C,0x87,0x14)), test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x02,0x0F,0xA5,0xEC)), test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x02,0x92,0xC6,0x74)), }; device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__); uint16_t values[6]; TEST_ASSERT_TRUE(Ad7280a::readAllChannels(values)); TEST_ASSERT_EQUALS(values[0], 100); TEST_ASSERT_EQUALS(values[1], 200); TEST_ASSERT_EQUALS(values[2], 300); TEST_ASSERT_EQUALS(values[3], 400); TEST_ASSERT_EQUALS(values[4], 500); TEST_ASSERT_EQUALS(values[5], 600); device.finish(); }
// ---------------------------------------------------------------------------- void Ad7280aTest::testSoftwareReset() { test::Transmission transmissionsInitialize[] = { test::Transmission(4, RX_DATA(0x01,0xD2,0xB4,0x12), TX_DATA(0x00,0x00,0x00,0x00)), test::Transmission(4, RX_DATA(0x01,0xC2,0xB6,0xE2), TX_DATA(0x00,0x00,0x00,0x00)), }; device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__); Ad7280a::softwareReset(); device.finish(); }
// ---------------------------------------------------------------------------- void Ad7280aTest::testChainSetup() { test::Transmission transmissionsInitialize[] = { test::Transmission(4, RX_DATA(0x01,0xD2,0xB4,0x12), TX_DATA(0x00,0x00,0x00,0x00)), test::Transmission(4, RX_DATA(0x01,0xC2,0xB6,0xE2), TX_DATA(0x00,0x00,0x00,0x00)), test::Transmission(4, RX_DATA(0x03,0x87,0x16,0xCA), TX_DATA(0x00,0x00,0x00,0x00)), test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x11,0xC2,0x65,0xDC)), }; device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__); TEST_ASSERT_TRUE(Ad7280a::chainSetup()); device.finish(); }
void ep_send_zlp(U8 ep_num) { cli(); ep_select(ep_num); while (!TX_FIFO_READY); TX_DATA(); while (!TX_FIFO_READY); sei(); }
// ---------------------------------------------------------------------------- void Ad7280aTest::testSelftest() { test::Transmission transmissionsInitialize[] = { test::Transmission(4, RX_DATA(0x01,0xC2,0xB6,0xE2), TX_DATA(0x00,0x00,0x00,0x00)), test::Transmission(4, RX_DATA(0x01,0xB9,0x11,0x92), TX_DATA(0x00,0x00,0x00,0x00)), test::Transmission(4, RX_DATA(0x03,0x86,0x17,0xCA), TX_DATA(0x00,0x00,0x00,0x00)), // Read the self-test conversion result (value = 980) test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x00,0x1E,0xA5,0x90)), }; device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__); TEST_ASSERT_TRUE(Ad7280a::performSelftest()); device.finish(); }
UINT8 SendByte(UINT8 dataByte) { UINT8 i; for (i = 0; i < 8; i++) { WAIT_SERIAL_CLK(1); if ((dataByte & 0x01) == 0){ TX_DATA(0); } else{ TX_DATA(1); } dataByte >>= 1; WAIT_SERIAL_CLK(0); } return TRUE; }
// ---------------------------------------------------------------------------- void Ad7280aTest::testChannelRead() { test::Transmission transmissionsInitialize[] = { test::Transmission(4, RX_DATA(0x01,0xA6,0x15,0x1A), TX_DATA(0x00,0x00,0x00,0x00)), test::Transmission(4, RX_DATA(0x01,0xA1,0x02,0x0A), TX_DATA(0x00,0x00,0x00,0x00)), test::Transmission(4, RX_DATA(0x03,0x80,0x61,0xBA), TX_DATA(0x00,0x00,0x00,0x00)), test::Transmission(4, RX_DATA(0xF8,0x00,0x03,0x0A), TX_DATA(0x01,0x91,0x2D,0x88)), }; device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__); uint16_t value; TEST_ASSERT_TRUE(Ad7280a::readChannel(0, xpcc::ad7280a::CELL_VOLTAGE_4, &value)); TEST_ASSERT_EQUALS(value, 549); device.finish(); }
// ---------------------------------------------------------------------------- void Ad7280aTest::testBalancer() { test::Transmission transmissionsInitialize[] = { test::Transmission(4, RX_DATA(0x02,0x81,0x83,0xC2), TX_DATA(0x00,0x00,0x00,0x00)), }; device.start(transmissionsInitialize, ARRAY_SIZE(transmissionsInitialize), __LINE__); Ad7280a::enableBalancer(0, xpcc::ad7280a::CB1 | xpcc::ad7280a::CB2); device.finish(); }
void SpiDeviceTest::testSingleTransmission() { test::Transmission transmissions[] = { test::Transmission(4, RX_DATA(1,2,3,4), TX_DATA(4,3,2,1)), }; test::SpiDevice device; device.start(transmissions, ARRAY_SIZE(transmissions), __LINE__, false); TEST_ASSERT_FALSE(device.isSuccessful()); device.select(); TEST_ASSERT_EQUALS(device.write(1), 4); TEST_ASSERT_EQUALS(device.write(2), 3); TEST_ASSERT_EQUALS(device.write(3), 2); TEST_ASSERT_EQUALS(device.write(4), 1); device.deselect(); TEST_ASSERT_TRUE(device.isSuccessful()); device.select(); device.deselect(); TEST_ASSERT_FALSE(device.isSuccessful()); // Restart transmission device.start(transmissions, ARRAY_SIZE(transmissions), __LINE__, false); device.select(); TEST_ASSERT_EQUALS(device.write(1), 4); TEST_ASSERT_EQUALS(device.write(2), 3); TEST_ASSERT_EQUALS(device.write(3), 2); TEST_ASSERT_EQUALS(device.write(4), 1); TEST_ASSERT_EQUALS(device.write(5), 0xff); // one byte to much device.deselect(); TEST_ASSERT_FALSE(device.isSuccessful()); }