Pārlūkot izejas kodu

Добавлен выбор скорости клока для TMSG

Anatoliy Chigirinskiy 1 gadu atpakaļ
vecāks
revīzija
2cb5d02c28
4 mainītis faili ar 17 papildinājumiem un 32 dzēšanām
  1. 2 1
      Devices/tmsgheaders.c
  2. 5 0
      Devices/tmsgheaders.h
  3. 1 31
      command.c
  4. 9 0
      main.c

+ 2 - 1
Devices/tmsgheaders.c

@@ -5,7 +5,8 @@ uint32_t cfgReg = CFG_REG_RST_FOR_FPGA_OFF		|
 				  CFG_REG_MOD_1					|  
 				  CFG_REG_LR_GPIO_0				|
 				  CFG_REG_HR_GPIO_0				|
-				  CFG_REG_SPI_MODE_1MOSI;
+				  CFG_REG_SPI_MODE_1MOSI		|
+				  CFG_REG_SPI_CLK_10MHZ;
 
 uint32_t tmsg_shift_reg = SHIFT_REG;
 

+ 5 - 0
Devices/tmsgheaders.h

@@ -346,6 +346,7 @@
 #define    CFG_REG_LR_GPIO_BITP                 3
 #define    CFG_REG_HR_GPIO_BITP                 4
 #define    CFG_REG_SPI_MODE_BITP                5
+#define    CFG_REG_SPI_CLK_BITP                 6
 
 #define    CFG_REG_RST_FOR_FPGA_BITM            (0x1 << CFG_REG_RST_FOR_FPGA_BITP)
 #define    CFG_REG_WIDTH_SPI_TMSG_BITM          (0x1 << CFG_REG_WIDTH_SPI_TMSG_BITP)
@@ -353,6 +354,7 @@
 #define    CFG_REG_LR_GPIO_BITM                 (0x1 << CFG_REG_LR_GPIO_BITP)
 #define    CFG_REG_HR_GPIO_BITM                 (0x1 << CFG_REG_HR_GPIO_BITP)
 #define    CFG_REG_SPI_MODE_BITM                (0x1 << CFG_REG_SPI_MODE_BITP)
+#define    CFG_REG_SPI_CLK_BITM                 (0x1 << CFG_REG_SPI_CLK_BITP)
 
 #define    CFG_REG_RST_FOR_FPGA_ON              0x1
 #define    CFG_REG_RST_FOR_FPGA_OFF             0x0
@@ -372,6 +374,9 @@
 #define    CFG_REG_SPI_MODE_1MOSI               (0x0 << CFG_REG_SPI_MODE_BITP)
 #define    CFG_REG_SPI_MODE_4MOSI               (0x1 << CFG_REG_SPI_MODE_BITP)
 
+#define    CFG_REG_SPI_CLK_10MHZ                (0x0 << CFG_REG_SPI_CLK_BITP)
+#define    CFG_REG_SPI_CLK_50MHZ                (0x1 << CFG_REG_SPI_CLK_BITP)
+
 #define    LMX_BASE_ADDR            0x04
 
 void rst_for_fpga(void *bar1);

+ 1 - 31
command.c

@@ -45,13 +45,7 @@ void handleFreqCmd(const char* recvBuff)
 	double lmx_freq = 0;
 
 	splitLexeme(recvBuff, freq, sizeof(freq[0]), convertToDouble);
-	// usleep(1);
-    uint32_t cfg_reg = get_cfg_reg();
-    SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_MODE_BITM, CFG_REG_SPI_MODE_BITP, CFG_REG_SPI_MODE_4MOSI); 
-    uint32_t *spi_mode = bar1 +CFG_REG_ADDR;
-    *spi_mode = cfg_reg;
-
-	set_cfg_reg(cfg_reg);
+	
 	potentiometer_set_qspi((uint8_t) offsetCode[0], (uint8_t) slopeCode[0]);
 	lmx_freq = lmx_get_freq(freq[0]);
 	f_pd = ad9912_set(bar1, lmx_freq, f_pd);
@@ -142,13 +136,6 @@ void handleArmCmd(const char* recvBuff)
 
 	splitLexeme(recvBuff, armCode, sizeof(armCode[0]), convertToUInt16);
 	printf("\n%u\n", armCode[0]);
-
-	uint32_t cfg_reg = get_cfg_reg();
-    SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_MODE_BITM, CFG_REG_SPI_MODE_BITP, CFG_REG_SPI_MODE_4MOSI); 
-    uint32_t *spi_mode = bar1 +CFG_REG_ADDR;
-    *spi_mode = cfg_reg;
-	set_cfg_reg(cfg_reg);
-
 	dac8811_set_qspi(bar1,armCode[0]);
 }
 
@@ -158,13 +145,6 @@ void handleAttCmd(const char* recvBuff)
 
 	splitLexeme(recvBuff, attCode, sizeof(attCode[0]), convertToUInt16);
 	printf("\n%u\n", attCode[0]);
-
-	uint32_t cfg_reg = get_cfg_reg();
-    SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_MODE_BITM, CFG_REG_SPI_MODE_BITP, CFG_REG_SPI_MODE_4MOSI); 
-    uint32_t *spi_mode = bar1 +CFG_REG_ADDR;
-    *spi_mode = cfg_reg;
-	set_cfg_reg(cfg_reg);
-
 	dac8811_att_set_qspi(bar1, attCode[0]);
 }
 
@@ -182,11 +162,6 @@ void handleOffsetCmd(const char* recvBuff)
 
 	splitLexeme(recvBuff, offsetCode, sizeof(offsetCode[0]), convertToUInt16);
 	printf("\n%u\n", offsetCode[0]);
-	uint32_t cfg_reg = get_cfg_reg();
-    SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_MODE_BITM, CFG_REG_SPI_MODE_BITP, CFG_REG_SPI_MODE_4MOSI); 
-    uint32_t *spi_mode = bar1 +CFG_REG_ADDR;
-    *spi_mode = cfg_reg;
-	set_cfg_reg(cfg_reg);
 	potentiometer_set_offset(bar1, offsetCode[0]);
 }
 
@@ -195,11 +170,6 @@ void handleSlopeCmd(const char* recvBuff)
 	printf("\nHandle command \"TMSG44:SLOPE\"\n");
 	splitLexeme(recvBuff, slopeCode, sizeof(slopeCode[0]), convertToUInt16);
 	printf("\n%u\n", slopeCode[0]);
-	uint32_t cfg_reg = get_cfg_reg();
-    SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_MODE_BITM, CFG_REG_SPI_MODE_BITP, CFG_REG_SPI_MODE_4MOSI); 
-    uint32_t *spi_mode = bar1 +CFG_REG_ADDR;
-    *spi_mode = cfg_reg;
-	set_cfg_reg(cfg_reg);
 	potentiometer_set_slope(bar1, slopeCode[0]);
 }
 

+ 9 - 0
main.c

@@ -119,6 +119,15 @@ int main(int argc, char *argv[])
     ad9912_init(bar1);
     lmx2594_init(bar1);
 
+	usleep(10);
+	// Установка режима SPI
+	uint32_t cfg_reg = get_cfg_reg();
+    SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_MODE_BITM, CFG_REG_SPI_MODE_BITP, CFG_REG_SPI_MODE_4MOSI);
+	SET_REGISTER_PARAM(cfg_reg, CFG_REG_SPI_CLK_BITM, CFG_REG_SPI_CLK_BITP, CFG_REG_SPI_CLK_50MHZ); 
+    uint32_t *spi_mode = bar1 +CFG_REG_ADDR;
+    *spi_mode = cfg_reg;
+	set_cfg_reg(cfg_reg);
+
 
 	// Установка обработчика сигналов
 	signal(SIGINT, handleCloseSignal);