diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index b617aaa..3eda1dc 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c
index 646ddd7..8c72ce8 100644
--- a/Core/Src/gpio.c
+++ b/Core/Src/gpio.c
@@ -79,10 +79,10 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- /*Configure GPIO pins : PA0 PA3 PA8 PA11
- PA12 PA15 */
- GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_3|GPIO_PIN_8|GPIO_PIN_11
- |GPIO_PIN_12|GPIO_PIN_15;
+ /*Configure GPIO pins : PA0 PA3 PA4 PA8
+ PA11 PA12 PA15 */
+ GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_8
+ |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
diff --git a/Core/Src/spi.c b/Core/Src/spi.c
index e257860..1966104 100644
--- a/Core/Src/spi.c
+++ b/Core/Src/spi.c
@@ -48,7 +48,7 @@ void MX_SPI1_Init(void)
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
- hspi1.Init.NSS = SPI_NSS_HARD_OUTPUT;
+ hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128;
hspi1.Init.FirstBit = SPI_FIRSTBIT_LSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
@@ -111,12 +111,11 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/**SPI1 GPIO Configuration
- PA4 ------> SPI1_NSS
PA5 ------> SPI1_SCK
PA6 ------> SPI1_MISO
PB5 ------> SPI1_MOSI
*/
- GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;
+ GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
@@ -261,12 +260,11 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
__HAL_RCC_SPI1_CLK_DISABLE();
/**SPI1 GPIO Configuration
- PA4 ------> SPI1_NSS
PA5 ------> SPI1_SCK
PA6 ------> SPI1_MISO
PB5 ------> SPI1_MOSI
*/
- HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6);
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6);
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_5);
diff --git a/Core/Src/usart.c b/Core/Src/usart.c
index 1c84365..cc61ce7 100644
--- a/Core/Src/usart.c
+++ b/Core/Src/usart.c
@@ -40,7 +40,7 @@ void MX_USART1_UART_Init(void)
/* USER CODE END USART1_Init 1 */
huart1.Instance = USART1;
- huart1.Init.BaudRate = 921600;
+ huart1.Init.BaudRate = 460800;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
diff --git a/iflytop_xsync b/iflytop_xsync
index eb4ecc5..280a6b6 160000
--- a/iflytop_xsync
+++ b/iflytop_xsync
@@ -1 +1 @@
-Subproject commit eb4ecc5d11b62c90e6164c663132dcccb8e9ed1f
+Subproject commit 280a6b62027ac3a0c8ee59e675b9c35425a85fbe
diff --git a/usrc/base_service/fpga_if.c b/usrc/base_service/fpga_if.c
index 14b75fd..71ed2c5 100644
--- a/usrc/base_service/fpga_if.c
+++ b/usrc/base_service/fpga_if.c
@@ -19,8 +19,15 @@ void fpga_if_init() { //
* 假传输一帧数据,使时钟线变为高电平。
*/
- fpga_if.spi2 = &hspi2;
- xs_gpio_init_as_output(&spi2_cs, PB9, kxs_gpio_nopull, false, true);
+ /**
+ * @brief
+ *
+ * CPOL:1
+ * CPHA:1
+ * LSB-FIRST
+ */
+ fpga_if.spi2 = &hspi1;
+ xs_gpio_init_as_output(&spi2_cs, PA4, kxs_gpio_pullup, false, true);
HAL_SPI_Receive(fpga_if.spi2, rxbuf, 1, 1000);
// fpga_if.spi2 = &hspi1;
@@ -38,7 +45,7 @@ void fpga_if_init() { //
xs_gpio_init_as_output(&fpga_if.reset_pin_io, fpga_if.reset_pin, kxs_gpio_pullup, false, false);
xs_gpio_write(&fpga_if.reset_pin_io, false);
- xs_delay_us(1);
+ xs_delay_ms(10);
xs_gpio_write(&fpga_if.reset_pin_io, true);
#endif
}
@@ -98,11 +105,6 @@ static void _fpga_if_spi_read_data(SPI_HandleTypeDef *hspi, uint32_t add, uint32
*rxdata = rxbuf[2] | (rxbuf[3] << 8) | (rxbuf[4] << 16) | (rxbuf[5] << 24);
}
-void fpga_if_spi_write_data_01(uint32_t add, uint32_t txdata, uint32_t *rxdata) {
- _fpga_if_spi_write_data(fpga_if.spi1, add, txdata, rxdata);
- _fpga_if_spi_read_data(fpga_if.spi1, add, rxdata);
-}
-void fpga_if_spi_read_data_01(uint32_t add, uint32_t *rxdata) { _fpga_if_spi_read_data(fpga_if.spi1, add, rxdata); }
void fpga_if_spi_write_data_02(uint32_t add, uint32_t txdata, uint32_t *rxdata) {
xSemaphoreTakeRecursive(m_spilock, portMAX_DELAY);
xs_gpio_write(&spi2_cs, false);
diff --git a/usrc/base_service/fpga_if.h b/usrc/base_service/fpga_if.h
index e40bf4d..e7a79e1 100644
--- a/usrc/base_service/fpga_if.h
+++ b/usrc/base_service/fpga_if.h
@@ -10,7 +10,6 @@ typedef struct {
/**
* @brief 指令SPI 接口
*/
- SPI_HandleTypeDef *spi1;
SPI_HandleTypeDef *spi2;
/**
@@ -46,21 +45,8 @@ void fpga_if_init();
* @param timecode1
*/
void fpga_if_get_timecode(uint32_t *timecode0, uint32_t *timecode1);
-/**
- * @brief SPI寄存器写指令_01 FPGA寄存器读写SPI
- *
- * @param add
- * @param txdata
- * @param rxdata
- */
-void fpga_if_spi_write_data_01(uint32_t add, uint32_t txdata, uint32_t *rxdata);
-/**
- * @brief SPI寄存器读指令 FPGA寄存器读写SPI
- *
- * @param add
- * @param rxdata
- */
-void fpga_if_spi_read_data_01(uint32_t add, uint32_t *rxdata);
+
+
/**
* @brief SPI寄存器写指令 FPGA备用SPI
diff --git a/usrc/main.cpp b/usrc/main.cpp
index 66864bb..f6ad5bf 100644
--- a/usrc/main.cpp
+++ b/usrc/main.cpp
@@ -37,7 +37,21 @@ void StartDefaultTask(void const* argument) { umain(); }
xs_gpio_t m_debug_led;
xs_gpio_t m_factory_reset_key;
-xs_gpio_t m_power_led;
+xs_gpio_t m_power_led0;
+xs_gpio_t m_power_led1;
+xs_gpio_t m_power_led2;
+
+void power_light_init() {
+ xs_gpio_init_as_output(&m_power_led0, PB6, kxs_gpio_nopull, false, true); // r
+ xs_gpio_init_as_output(&m_power_led1, PB7, kxs_gpio_nopull, false, true); // g
+ xs_gpio_init_as_output(&m_power_led2, PB8, kxs_gpio_nopull, false, true); // b
+}
+void power_light_ctrl(bool state) {
+ xs_gpio_write(&m_power_led0, 0);
+ xs_gpio_write(&m_power_led1, state);
+ xs_gpio_write(&m_power_led2, state);
+}
+
extern "C" {
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { ReportGeneratorService_irq_trigger(GPIO_Pin); }
}
@@ -49,9 +63,9 @@ void debug_light_ctrl() {
light_status = !light_status;
xs_gpio_write(&m_debug_led, light_status);
if (network_service_network_is_ready()) {
- xs_gpio_write(&m_power_led, 1);
+ power_light_ctrl(1);
} else {
- xs_gpio_write(&m_power_led, light_status);
+ power_light_ctrl(light_status);
}
lastcall = xs_get_ticket();
}
@@ -77,9 +91,9 @@ void factory_reset_key_detect() {
// m_power_led
while (xs_gpio_read(&m_factory_reset_key)) {
- xs_gpio_write(&m_power_led, false);
+ power_light_ctrl(false);
osDelay(1000);
- xs_gpio_write(&m_power_led, true);
+ power_light_ctrl(true);
osDelay(1000);
}
ZLOGI(TAG, "system reset");
@@ -90,8 +104,12 @@ void factory_reset_key_detect() {
}
}
+// PB6
+// PB7
+// PB8
+
void umain() {
- XS_LOGI(TAG, "%s:%d", PC_PROJECT_NAME, PC_VERSION);
+ XS_LOGI(TAG, "%s:%d-%d-%d", PC_PROJECT_NAME, VERSION_MAIN, VERSION_SUB, VERSION_FIX);
XS_LOGI(TAG, "sn: %02d%02d%04d", xs_device_info_get()->year, xs_device_info_get()->weak, xs_device_info_get()->index);
// XS_LOGI(TAG, "sn: %x:%x:%x", sn.sn0, sn.sn1, sn.sn2);
@@ -102,7 +120,8 @@ void umain() {
* 3. 初始化工厂复位按键
*/
xs_gpio_init_as_output(&m_debug_led, PC_DEBUG_LIGHT_GPIO, kxs_gpio_nopull, false, false);
- xs_gpio_init_as_output(&m_power_led, POWER_LED_PIN, kxs_gpio_nopull, false, true);
+ // xs_gpio_init_as_output(&m_power_led, POWER_LED_PIN, kxs_gpio_nopull, false, true);
+ power_light_init();
xs_gpio_init_as_input(&m_factory_reset_key, FACTORY_RESET_KEY, kxs_gpio_pullup, kxs_gpio_no_irq, true);
// m_power_led
/**
@@ -147,6 +166,10 @@ void umain() {
network_service_schedule();
HAL_IWDG_Refresh(&hiwdg);
+ // uint32_t val;
+ // fpga_if_spi_read_data_02(0x0020, &val);
+ // ZLOGI(TAG, "fpga_if_spi_read_data_02 %x", val);
+
// if (xs_has_passedms(0) >= * 60 * 60 * 1000) {
// 限制客户使用时长
// reset_pin_io
diff --git a/usrc/project_configs.h b/usrc/project_configs.h
index 7bb0350..1eaf37f 100644
--- a/usrc/project_configs.h
+++ b/usrc/project_configs.h
@@ -1,7 +1,10 @@
#pragma once
#define VERSION(main, sub, fix) (main << 16 | sub << 8 | fix << 0)
-#define PC_VERSION VERSION(5, 0, 0)
+#define PC_VERSION VERSION(6, 0, 0)
+#define VERSION_MAIN (PC_VERSION >> 16)
+#define VERSION_SUB ((PC_VERSION >> 8) & 0xff)
+#define VERSION_FIX (PC_VERSION & 0xff)
#define PC_MANUFACTURER0 ('i' | 'f' << 8 | 'l' << 16 | 'y' << 24)
#define PC_MANUFACTURER1 ('t' | 'o' << 8 | 'p' << 16 | '\0' << 24)
diff --git a/xsync_stm32.ioc b/xsync_stm32.ioc
index 60ae8d6..e94f895 100644
--- a/xsync_stm32.ioc
+++ b/xsync_stm32.ioc
@@ -135,39 +135,38 @@ Mcu.Name=STM32F407V(E-G)Tx
Mcu.Package=LQFP100
Mcu.Pin0=PH0-OSC_IN
Mcu.Pin1=PH1-OSC_OUT
-Mcu.Pin10=PA7
-Mcu.Pin11=PC4
-Mcu.Pin12=PC5
-Mcu.Pin13=PB10
-Mcu.Pin14=PB11
-Mcu.Pin15=PB12
-Mcu.Pin16=PB13
-Mcu.Pin17=PA9
-Mcu.Pin18=PA10
-Mcu.Pin19=PA13
+Mcu.Pin10=PC4
+Mcu.Pin11=PC5
+Mcu.Pin12=PB10
+Mcu.Pin13=PB11
+Mcu.Pin14=PB12
+Mcu.Pin15=PB13
+Mcu.Pin16=PA9
+Mcu.Pin17=PA10
+Mcu.Pin18=PA13
+Mcu.Pin19=PA14
Mcu.Pin2=PC1
-Mcu.Pin20=PA14
-Mcu.Pin21=PD3
-Mcu.Pin22=PB3
-Mcu.Pin23=PB5
-Mcu.Pin24=VP_CRC_VS_CRC
-Mcu.Pin25=VP_FREERTOS_VS_CMSIS_V1
-Mcu.Pin26=VP_IWDG_VS_IWDG
-Mcu.Pin27=VP_LWIP_VS_Enabled
-Mcu.Pin28=VP_RNG_VS_RNG
-Mcu.Pin29=VP_SYS_VS_tim11
+Mcu.Pin20=PD3
+Mcu.Pin21=PB3
+Mcu.Pin22=PB5
+Mcu.Pin23=VP_CRC_VS_CRC
+Mcu.Pin24=VP_FREERTOS_VS_CMSIS_V1
+Mcu.Pin25=VP_IWDG_VS_IWDG
+Mcu.Pin26=VP_LWIP_VS_Enabled
+Mcu.Pin27=VP_RNG_VS_RNG
+Mcu.Pin28=VP_SYS_VS_tim11
+Mcu.Pin29=VP_TIM1_VS_ClockSourceINT
Mcu.Pin3=PC2
-Mcu.Pin30=VP_TIM1_VS_ClockSourceINT
-Mcu.Pin31=VP_TIM3_VS_ClockSourceINT
-Mcu.Pin32=VP_TIM6_VS_ClockSourceINT
-Mcu.Pin33=VP_TIM7_VS_ClockSourceINT
+Mcu.Pin30=VP_TIM3_VS_ClockSourceINT
+Mcu.Pin31=VP_TIM6_VS_ClockSourceINT
+Mcu.Pin32=VP_TIM7_VS_ClockSourceINT
Mcu.Pin4=PC3
Mcu.Pin5=PA1
Mcu.Pin6=PA2
-Mcu.Pin7=PA4
-Mcu.Pin8=PA5
-Mcu.Pin9=PA6
-Mcu.PinsNb=34
+Mcu.Pin7=PA5
+Mcu.Pin8=PA6
+Mcu.Pin9=PA7
+Mcu.PinsNb=33
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F407VETx
@@ -210,8 +209,6 @@ PA14.Mode=Trace_Asynchronous_SW
PA14.Signal=SYS_JTCK-SWCLK
PA2.Mode=RMII
PA2.Signal=ETH_MDIO
-PA4.Mode=NSS_Signal_Hard_Output
-PA4.Signal=SPI1_NSS
PA5.Mode=Full_Duplex_Master
PA5.Signal=SPI1_SCK
PA6.Mode=Full_Duplex_Master
@@ -282,7 +279,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=true
-ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true,6-MX_CRC_Init-CRC-false-HAL-true,7-MX_RNG_Init-RNG-false-HAL-true,8-MX_TIM7_Init-TIM7-false-HAL-true,9-MX_TIM6_Init-TIM6-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_LWIP_Init-LWIP-false-HAL-false,12-MX_SPI1_Init-SPI1-false-HAL-true,13-MX_SPI2_Init-SPI2-false-HAL-true
+ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true,6-MX_CRC_Init-CRC-false-HAL-true,7-MX_RNG_Init-RNG-false-HAL-true,8-MX_TIM7_Init-TIM7-false-HAL-true,9-MX_TIM6_Init-TIM6-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_LWIP_Init-LWIP-false-HAL-false,12-MX_SPI1_Init-SPI1-false-HAL-true,13-MX_SPI2_Init-SPI2-false-HAL-true,14-MX_IWDG_Init-IWDG-false-HAL-true
RCC.48MHZClocksFreq_Value=48000000
RCC.AHBFreq_Value=144000000
RCC.APB1CLKDivider=RCC_HCLK_DIV4
@@ -329,9 +326,8 @@ SPI1.CLKPolarity=SPI_POLARITY_HIGH
SPI1.CalculateBaudRate=562.5 KBits/s
SPI1.Direction=SPI_DIRECTION_2LINES
SPI1.FirstBit=SPI_FIRSTBIT_LSB
-SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS,BaudRatePrescaler,FirstBit,CLKPolarity,CLKPhase
+SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,FirstBit,CLKPolarity,CLKPhase
SPI1.Mode=SPI_MODE_MASTER
-SPI1.VirtualNSS=VM_NSSHARD
SPI1.VirtualType=VM_MASTER
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64
SPI2.CLKPhase=SPI_PHASE_2EDGE