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