Добрый день.
Есть плата с МК STM32F103 и ПЛИС MAX II. Дали задачу реализовать интерфейс передачи данных между ними. ПЛИС постоянно отправляет данные в МК . Используются три линии: CLK, DATA, RD. Формат данных: 32 бита данные + 16 бит CRC. Линия RD нужна для оповещения МК о передаче CRC.
Примеры передачи:



Код в МК для приема:
CODE
while (1) {
if(RD) //Проверяем сигнал отправки CRC cуммы
{
if(CLK)//Проверка положительного фронта частоты
{
if(isReady == 0)//Проверка смены такта частоты CLK
{
isReady = 1;
if(IN) // Проверка на 1 или 0 входных данных
{
miso |= mask;
}
mask <<= 1;// сдвиг маски
if(mask > 0x8000)//проверка достигла ли маска оговоренной длины
{
if(miso == 0x1D0F) {
MDR_PORTB->RXTX ^= toggle; //мигаем светодиодом
}
mask = 0x01;
miso = 0;
}
}
}
else
{
isReady = 0;
}
МК тактируется от 16 МГц, а ПЛИС - от внутреннего генератора на 5 МГц. С ПЛИС отправляю 0xFFFFFFFF и CRC сумму этого числа 0x1DOF.
МК правильно принимает 1 передачу через 3.
Подскажите, пожалуйста, в чем может быть проблема ?
Спасибо.