hsram1.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
hsram1.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
hsram1.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
- hsram1.Init.WriteFifo = FMC_WRITE_FIFO_ENABLE;
+ hsram1.Init.WriteFifo = FMC_WRITE_FIFO_DISABLE;
+ // WE MAY start writing another 512 bytes before this FIFO is empty!
+
hsram1.Init.PageSize = FMC_PAGE_SIZE_NONE;
/* Timing */
}
SD_state = HAL_SD_Init(&hsd);
#ifdef BUS_4BITS
- if (SD_state == MSD_OK)
+ if (SD_state == HAL_OK)
{
if (HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) != HAL_OK)
{
\r
#include <string.h>\r
\r
-static const uint16_t FIRMWARE_VERSION = 0x0646;\r
+static const uint16_t FIRMWARE_VERSION = 0x0647;\r
\r
// Optional static config\r
extern uint8_t* __fixed_config;\r
\r
+extern SD_HandleTypeDef hsd;\r
+\r
#ifdef S2S_USB_HS\r
#define configUsbDev hUsbDeviceHS\r
#else\r
response[23] = scsiDev.msgCount;\r
response[24] = scsiDev.cmdCount;\r
response[25] = scsiDev.watchdogTick;\r
- response[26] = blockDev.state;\r
+ response[26] = (hsd.State << 4) | blockDev.state;\r
response[27] = scsiDev.lastSenseASC >> 8;\r
response[28] = scsiDev.lastSenseASC;\r
response[29] = *SCSI_STS_DBX & 0xff; // What we've read\r
int scsiFifoReady(void)\r
{\r
__NOP();\r
-#ifdef STM32F4xx\r
- __NOP();\r
-#endif\r
- HAL_GPIO_ReadPin(GPIOE, FPGA_GPIO3_Pin);\r
+ uint8_t test1 = HAL_GPIO_ReadPin(GPIOE, FPGA_GPIO3_Pin);\r
__NOP();\r
#ifdef STM32F4xx\r
__NOP();\r
__NOP();\r
__NOP();\r
#endif\r
- return HAL_GPIO_ReadPin(GPIOE, FPGA_GPIO3_Pin) != 0;\r
+ uint8_t test2 = HAL_GPIO_ReadPin(GPIOE, FPGA_GPIO3_Pin);\r
+ return test1 != 0 && test2 != 0;\r
}\r
\r
uint8_t\r