浏览代码

Fixes for FMC interface corruption

Michael McMaster 4 年之前
父节点
当前提交
752c0778c9
共有 3 个文件被更改,包括 10 次插入10 次删除
  1. 3 3
      lib/SCSI2SD/STM32CubeMX/2021/Src/fmc.c
  2. 1 1
      lib/SCSI2SD/src/firmware/config.c
  3. 6 6
      lib/SCSI2SD/src/firmware/scsiPhy.c

+ 3 - 3
lib/SCSI2SD/STM32CubeMX/2021/Src/fmc.c

@@ -56,7 +56,7 @@ void MX_FMC_Init(void)
   /* Timing */
 
   // 1 clock to read the address, + 1 for synchroniser skew
-  Timing.AddressSetupTime = 4;
+  Timing.AddressSetupTime = 5;
   Timing.AddressHoldTime = 2;
 
   // Writes to device:
@@ -67,12 +67,12 @@ void MX_FMC_Init(void)
   // Reads from device:
   //   3 for syncroniser
   //   1 to write back to fsmc bus.
-  Timing.DataSetupTime = 8;
+  Timing.DataSetupTime = 9;
 
   // Allow a clock for us to release signals
   // Need to avoid both devices acting as outputs
   // on the multiplexed lines at the same time.
-  Timing.BusTurnAroundDuration = 2;
+  Timing.BusTurnAroundDuration = 3;
 
   Timing.CLKDivision = 16; // Ignored for async
   Timing.DataLatency = 17; // Ignored for async

+ 1 - 1
lib/SCSI2SD/src/firmware/config.c

@@ -36,7 +36,7 @@
 
 #include <string.h>
 
-static const uint16_t FIRMWARE_VERSION = 0x0647;
+static const uint16_t FIRMWARE_VERSION = 0x0648;
 
 // Optional static config
 extern uint8_t* __fixed_config;

+ 6 - 6
lib/SCSI2SD/src/firmware/scsiPhy.c

@@ -122,12 +122,12 @@ scsiReadByte(void)
 
 	// Ready immediately. setDataCount resets fifos
 
-	__disable_irq();
+	//__disable_irq();
 	while (!scsiPhyComplete() && likely(!scsiDev.resetFlag))
 	{
-		__WFI(); // Wait for interrupt
+		//__WFI(); // Wait for interrupt
 	}
-	__enable_irq();
+	//__enable_irq();
 
 	uint8_t val = scsiPhyRx();
 	// TODO scsiDev.parityError = scsiDev.parityError || SCSI_Parity_Error_Read();
@@ -347,12 +347,12 @@ scsiWriteByte(uint8_t value)
 	scsiSetDataCount(1);
 	scsiPhyTx(value);
 
-	__disable_irq();
+	//__disable_irq();
 	while (!scsiPhyComplete() && likely(!scsiDev.resetFlag))
 	{
-		__WFI();
+		//__WFI();
 	}
-	__enable_irq();
+	//__enable_irq();
 }
 
 void