\r
#include <string.h>\r
\r
-static const uint16_t FIRMWARE_VERSION = 0x0641;\r
+static const uint16_t FIRMWARE_VERSION = 0x0642;\r
\r
// Optional static config\r
extern uint8_t* __fixed_config;\r
(prep - i < buffers) &&\r
(prep < totalSDSectors) &&\r
((totalSDSectors - prep) >= sdPerScsi) &&\r
- (likely(!useSlowDataCount) || scsiPhyComplete()))\r
+ (likely(!useSlowDataCount) || scsiPhyComplete()) &&\r
+ (HAL_SD_GetState(&hsd) != HAL_SD_STATE_BUSY)) // rx complete but IRQ not fired yet.\r
{\r
// Start an SD transfer if we have space.\r
uint32_t startBuffer = prep % buffers;\r
}\r
__enable_irq();\r
\r
+ while (HAL_SD_GetState(&hsd) == HAL_SD_STATE_BUSY)\r
+ {\r
+ // Wait while keeping BSY.\r
+ }\r
+\r
if (scsiDev.phase == DATA_IN)\r
{\r
scsiDev.phase = STATUS;\r
void s2s_fpgaReset()
{
HAL_GPIO_WritePin(FPGA_RST_GPIO_Port, FPGA_RST_Pin, GPIO_PIN_SET);
- s2s_delay_clocks(4);
+ s2s_delay_clocks(12);
HAL_GPIO_WritePin(FPGA_RST_GPIO_Port, FPGA_RST_Pin, GPIO_PIN_RESET);
}
*SCSI_DATA_CNT_MID = (count >> 8) & 0xff;\r
*SCSI_DATA_CNT_LO = count & 0xff;\r
*SCSI_DATA_CNT_SET = 1;\r
+\r
+#ifdef STM32F4xx\r
+ __NOP();\r
+ __NOP();\r
+#endif\r
}\r
\r
int scsiFifoReady(void)\r
__NOP();\r
#ifdef STM32F4xx\r
__NOP();\r
+ __NOP();\r
+ __NOP();\r
#endif\r
return HAL_GPIO_ReadPin(GPIOE, FPGA_GPIO3_Pin) != 0;\r
}\r