#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include "wiringRP.h"
#include "spi.h"
void setup() {
if(setupWiringRP(WRP_MODE_SUNXI) < 0) {
exit(EXIT_FAILURE);
}
printf("--- Тест SPI0 Loopback ---\n");
printf("Убедитесь, что пины MOSI и MISO для SPI0 соединены (например, пин 19 и 21).\n\n");
}
void loop() {
int fd = spiSetup(SPI0_BUS, 1000000); // Инициализируем SPI0 на скорости 1 МГц
if (fd < 0) {
printf("Не удалось инициализировать SPI0. Проверьте вариант распиновки.\n");
delay(5000);
return; // Попробуем снова через 5 секунд
}
uint8_t tx_data[] = {0xAA, 0x55, 0xDE, 0xAD};
uint8_t rx_data[sizeof(tx_data)] = {0};
printf("Отправка данных: 0xAA 0x55 0xDE 0xAD\n");
spiDataRW(fd, tx_data, rx_data, sizeof(tx_data));
printf("Полученные данные: 0x%02X 0x%02X 0x%02X 0x%02X\n",
rx_data[0], rx_data[1], rx_data[2], rx_data[3]);
if (memcmp(tx_data, rx_data, sizeof(tx_data)) == 0) {
printf("Результат: УСПЕХ! Данные совпадают.\n\n");
} else {
printf("Результат: ОШИБКА! Данные не совпадают.\n\n");
}
spiRelease(fd);
delay(5000); // Пауза перед следующим тестом
}
ONDESTROY(){
releaseWiringRP();
exit(0);
}
MAIN_WIRINGRP();